【问题标题】:Search entire SQLite Database for a keyword to implement Search functionality in the android app在整个 SQLite 数据库中搜索关键字以在 android 应用中实现搜索功能
【发布时间】:2016-08-01 19:11:45
【问题描述】:

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

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

【问题讨论】:

    标签: android sqlite search


    【解决方案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%'
    

    如果您以后决定需要额外的搜索字段或额外的搜索表,您所要做的就是更新数据库视图

    【讨论】:

      【解决方案2】:

      我认为更有效的查询是:

      select KEY_COLUMN1+' '+KEY_COLUMN2+' '+KEY_COLUMN3 from mytable
      where KEY_COLUMN1+' '+KEY_COLUMN2+' '+KEY_COLUMN3 like %pattern%
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多