我有两个表,我想根据这些表列构建查询。首先,我在这里创建表格。
db.execSQL("CREATE TABLE " + Constants.PRODUCTS_INFO +
" (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + Constants.BARCODE + " BIGINT);");
db.execSQL("CREATE TABLE " +
Constants.FOOD_ADDITIVES_TABLE + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
Constants.FOOD_ADDITIVES + " TEXT, " + Constants.PRODUCT_ID + " INTEGER);");
正如您所看到的,两个表都有自己的_id
。
所以现在我想构建一个查询
String q = "SELECT " + Constants.FOOD_ADDITIVES + " FROM " +
Constants.FOOD_ADDITIVES_TABLE + " INNER JOIN " + Constants.PRODUCTS_INFO + " ON " +
Constants.PRODUCTS_INFO + "._id = " + Constants.PRODUCT_ID + " WHERE " + Constants.BARCODE + " = ?";
cursor = db.rawQuery(q, new String[]{barcode});
adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor,
new String[]{Constants.BARCODE}, new int[]{android.R.id.text1}, 0);
在此之后我收到此错误
Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
dumpCursor输出:
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@8e56edf
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: 0 {
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: FOOD_ADDITIVES=E621
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: }
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: 1 {
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: FOOD_ADDITIVES=E301
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: }
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: 2 {
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: FOOD_ADDITIVES=E120
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: }
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: 3 {
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: FOOD_ADDITIVES=E250
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: }
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: 4 {
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: FOOD_ADDITIVES=E316
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: }
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: 5 {
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: FOOD_ADDITIVES=E250
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: }
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode I/System.out: <<<<<
11-16 21:14:58.241 18948-18948/barcode2.android.com.barcode D/AndroidRuntime: Shutting down VM
答案 0 :(得分:1)
你有IllegalArgumentException
:
IllegalArgumentException: column '_id' does not exist
CursorAdapter
需要此列,您需要将"_id"
列添加到您的&#34; SELCT&#34;查询,如果您不确定Cursor
来电DatabaseUtils.dumpCursor()
中的内容是什么,请查看其列