Android sqlite使用过程中问题总结记录
项目中,需求是要保存搜索历史记录,并且可以查询历史记录。问题1. 精确查询与模糊查询是有区别的,实现代码不同,在参考网上的代码时,这一点要注意。如:下面程序是精确查询:Cursor cursor = db.query(Note.TABLE_NAME,new String[]{Note.COLUMN_ID, Note.COLUMN_NOTE, Note.COL...
·
项目中,需求是要保存搜索历史记录,并且可以查询历史记录。
问题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 …
更多推荐
已为社区贡献1条内容
所有评论(0)