[英]SQLite build query from multiple tables column '_id' does not exist
我有兩個表,我想基於這些表列構建查詢。 首先,這是我創建表的方式。
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
你有IllegalArgumentException
:
IllegalArgumentException: column '_id' does not exist
此列是CursorAdapter
所必需的,當您不確定Cursor
的內部內容是什么時,您需要在“ SELCT”查詢中添加一個名為"_id"
的列,調用DatabaseUtils.dumpCursor()
來查看其列
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.