SQLite构建来自多个表列的查询' _id'不存在

时间:2015-11-16 18:26:16

标签: android mysql sql database sqlite

我有两个表,我想根据这些表列构建查询。首先,我在这里创建表格。

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

1 个答案:

答案 0 :(得分:1)

你有IllegalArgumentException

IllegalArgumentException: column '_id' does not exist

CursorAdapter需要此列,您需要将"_id"列添加到您的&#34; SELCT&#34;查询,如果您不确定Cursor来电DatabaseUtils.dumpCursor()中的内容是什么,请查看其列