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

问题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 …

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐