Android sqlite使用过程中问题总结记录

项目中,需求是要保存搜索历史记录,并且可以查询历史记录。

问题1. 精确查询与模糊查询是有区别的,实现代码不同,在参考网上的代码时,这一点要注意。
如:下面程序是精确查询:

Cursor cursor = db.query(Note.TABLE_NAME,
                new String[]{Note.COLUMN_ID, Note.COLUMN_NOTE, Note.COLUMN_TIMESTAMP},
                Note.COLUMN_ID + "=?",
                new String[]{String.valueOf(id)}, null, null, null, null);

精确查询要求我们输入完整且区分大小写的查询内容;
下面程序是模糊查询:

Cursor cursor = helper.getReadableDatabase().query(Location.TABLE_NAME,
                new String[]{"id as _id", Location.COLUMN_NAME,Location.COLUMN_NOTE, Location.COLUMN_TIMESTAMP},
                Location.COLUMN_NAME +"  LIKE ? ",
                new String[]{"%" + tempName + "%"}, null, null, null, null);

模糊查询分成很多种:包括字符串开头相同、字符串结尾相同或者字符串包含某一内容等,满足要求的的都会被筛选出来。

例如我们数据库中保存了London Bridge、London Eye这两个字符串。
精确查找时,输入“London”,无法查询到我们保存的字符串,当输入“London Bridge”这种完整的字符串时,可以查询到第一个字符串;
模糊查找时,输入“London”,可以查找出上面两个字符串。

问题2. 使用SimpleCursorAdapter函数时,它需要一个叫"_id"的键值。而且是必须。否则会报错:

java.lang.IllegalArgumentException: column '_id' does not exist

解决办法是:query的时候加上as _id就行了。比如你的键值是id那么就用select id as _id, xx,xxxx, from xxx where …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值