1. 程式人生 > >Android 查詢Sqlite表中的資料時,表中必須得有_id欄位,否則報錯

Android 查詢Sqlite表中的資料時,表中必須得有_id欄位,否則報錯

1.情況:使用外部自建表 .db 檔案(自建的表,沒有_id 欄位),通過raw 載入/拷貝到內部儲存中去。當我想去與 SimpleCursorAdapter進行關聯使用的時候,即進行對庫的表查詢,返回Cursor結果,將結果通過Adapter.swapCursor()去置換資料來源顯示。會報錯

05-18 15:59:20.220: E/AndroidRuntime(2601): java.lang.IllegalArgumentException: column '_id' does not exist

05-18 15:59:20.220: E/AndroidRuntime(2601):     at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303
) 05-18 15:59:20.220: E/AndroidRuntime(2601): at android.widget.CursorAdapter.swapCursor(CursorAdapter.java:342)

解決:將我們自己的可以當成_id欄位的欄位,在我們進行Select的時候,在後面跟上 AS _id. 如:

mDb.query(
                DBContants.DB_DEVICES_TABLE_NAME, new String[] { "DEVICEID  AS _id", "DEVICENAME", "DEVICEALIAS", "DEVICETYPE"
, "CONFSTATUS", "SCENE", "TEMPLETID", "BRAND", "MODELCODE" }, "SCENE =" + sceneType, null, null, null, null);

mDb.execSQL( " SELECT  DEVICEID  AS _id,DEVICENAME,DEVICETYPE  from " + DBContants.DB_DEVICES_TABLE_NAME  );