我想用不同的ID (CustomerID,OrderID)连接到数据库中的表。我使用以下代码创建我的外键:
FOREIGN KEY("+ COLUMN_ORDER_ID + ") REFERENCES+TABLE_NAME_CUSTOMER + "(" + COLUMN_CUSTOMER_ID + "));";我没有发布完整的源代码,因为我的第一个表工作得很好,我认为问题在于外键。
我使用以下方法过滤数据:
public List<Orders> getOrdersByCustomerID() {
List<Orders> orderList = new ArrayList<Orders>();
String query = "select " + COLUMN_ORDER_ID
+ "," + COLUMN_ORDER_NAME
+ "," + COLUMN_SETS
+ "," + COLUMN_REPEATS
+ "," + COLUMN_SECTION
+ " from " + TABLE_NAME_ORDERS
+ " where " + COLUMN_CUSTOMER_ID
+ "=" + COLUMN_ORDER_ID;
db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
do {
Orders orders = new Orders(cursor.getString(0), cursor.getString(1), cursor.getInt(2), cursor.getInt(3), cursor.getString(4));
orderList.add(orders);
} while (cursor.moveToNext());
}
db.close();
return orderList;
}我收到以下错误消息:
06-26 17:11:26.154 10163-10163/com.xxx.xx.xxx E/AndroidRuntime:致命异常:主进程: com.xxx.xxx.xxx,PID: 10163 java.lang.RuntimeException:无法启动活动android.database.sqlite.SQLiteException:没有这样的列: customerId(Sqlite 1):,在编译时:选择orderId、orderName、sets、repeats、orders (OS error -2:没有这样的文件或目录)
我认为这两个id之间的连接是不正确的,还是必须从我的customer表中提交id?有小费吗?根据我的理解,一个Customer可以有多个Order,这就是我使用外键的原因,我希望这是正确的。
发布于 2016-06-26 15:43:43
编辑:我错了,显然在mysql中查询是不区分大小写的。
编辑:为了创建外键,两个表都必须包含ConsumerId。这允许您使用外键建立关系。在创建外键之后,您的查询必须更改为wel。应该是这样的
select " + COLUMN_ORDER_IDq
+ "," + COLUMN_ORDER_NAME
+ "," + COLUMN_SETS
+ "," + COLUMN_REPEATS
+ "," + COLUMN_SECTION
+ " from " + TABLE_NAME_ORDERS + "," + TABLE_NAME_CUSTOMERS
+ " where " + TABLE_NAME_ORDERS +"." + COLUMN_CUSTOMER_ID
+ "=" + TABLE_NAME_CUSTOMERS + "." + COLUMN_CUSTOMER_IDhttps://stackoverflow.com/questions/38040114
复制相似问题