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 );
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了