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  );

转自:http://blog.csdn.net/k316378085/article/details/51445639
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值