簡體   English   中英

來自多個表列“ _id”的SQLite構建查詢不存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM