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 );
转自:http://blog.csdn.net/k316378085/article/details/51445639