在整个SQLite数据库中搜索关键字,以在Android应用程序中实现搜索功能

时间:2016-04-11 14:39:29

标签: android sqlite search

我有一个包含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); 
} 

赞赏有关此事的意见以及对实施的任何帮助。

2 个答案:

答案 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%