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

标签 android sqlite search

我有一个包含 10 个表的数据库,每个表有 5 到 10 列,我希望整个数据库的记录不超过 500 条。

我想在应用程序中实现搜索功能,在整个数据库中搜索关键字并显示所有结果的自定义 ListView 。

我尝试寻找实现此方法的方法,但尚未在 android 中找到 SQLite 的解决方案。有SQL server implementations这个的。

我现在看到的方式是为每个表编写一个查询并搜索每一列,然后过滤结果以填充我的自定义 ListView 。

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); 
} 

感谢对此事的意见以及对实现的任何帮助。

最佳答案

我会将所有搜索内容作为一个数据库 View 移动到数据库中

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%'

如果您稍后决定需要额外的搜索字段或额外的搜索表,您只需更新数据库 View 即可

关于android - 在整个 SQLite 数据库中搜索关键字以在 Android 应用程序中实现搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551823/

相关文章:

java - 用 Java 读取 CSV 文件的最快方法

Android 打开对话框在 onActivityResult 后崩溃应用程序

java - 使用字符串变量创建android imageview

java - Android while !c.isAfterLast() loop not being entered

android - 在 Android 中执行搜索时如何完成当前 Activity ?

java - Android 应用程序已停止并出现 NoClassDefFoundError

java - 用于在java桌面应用程序中存储字符串的本地数据库,当前使用MongoDB

java - 从用于 Google map 标记的 SQLite 数据库中读取值

java - 有没有java/java IDE的语义查询工具?

python - 如何使用django filter icontains获取多个字段