我有一个包含10个表的数据库,每个数据库有5到10列,并且预计整个数据库的记录不会超过500个。
我想在应用程序中实现搜索功能,我在整个数据库中搜索关键字并显示所有结果的自定义列表视图。
我试图寻找实现这一目标的方法但是还没有在android中找到SQLite的解决方案。有SQL server implementations这个。
目前我看到的方法是为每个表编写一个查询并搜索每一列,然后过滤结果以填充我的自定义列表视图。
public Cursor searchDB(String query) {
return db.query(true, DB_TABLE,
new String[] { KEY_ROWID, KEY_COLUMN1, KEY_COLUMN2, ... KEY_COLUMN10},
KEY_COLUMN1 + " LIKE" + "'%" + query + "%' OR " +
KEY_COLUMN2 + " LIKE" + "'%" + query + "%' OR " + ...
KEY_COLUMN10 + " LIKE" + "'%" + query + "%'",
null, null, null, null, null);
}
赞赏有关此事的意见以及对实施的任何帮助。
答案 0 :(得分:1)
我会将所有搜索内容作为一个数据库视图移动到数据库中
CREATE VIEW [search] AS
select 't1' as tab, id as id, col1+col2+col3 as key from t1
union
select 't2' as tab, id as id, colA+colB+colC as key from t2
并有一个简单的查询来查找结果
select tab, id from search where key like '%12%'
如果您以后决定需要额外的搜索字段或其他搜索表,您只需要更新数据库视图
答案 1 :(得分:0)
更有效我认为会查询如下:
select KEY_COLUMN1+' '+KEY_COLUMN2+' '+KEY_COLUMN3 from mytable
where KEY_COLUMN1+' '+KEY_COLUMN2+' '+KEY_COLUMN3 like %pattern%