使用Android搜索对话框搜索多个数据库列

kir*_*882 1 sqlite search android dialog

我有Android搜索对话框,但我遇到的问题是我有一个3列数据库表,我希望搜索所有3列.以下方法仅对表的第1列执行搜索:

//--- GET RECORDS FOR SEARCH
public Cursor searchDB(String query) {
    String[] allColumns = new String[]{ KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 };
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID,
            KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }, KEY_COLUMN1 + " LIKE" + "'%"   + query + "%'", null, null, null, null, null);
}
//--- END Get Records for Search
Run Code Online (Sandbox Code Playgroud)

所以我尝试在查询中添加一个字符串数组,如下所示:

//--- GET RECORDS FOR SEARCH
public Cursor searchDB(String query) {
    String[] allColumns = new String[]{ KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 };
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID,
            KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }, allColumns + " LIKE" + "'%"        + query + "%'", null, null, null, null, null);
}
//--- END Get Records for Search 
Run Code Online (Sandbox Code Playgroud)

但这会导致应用程序崩溃.那么如何修改方法来搜索三列(Column1,Column2和Column3)?

Bar*_*rak 6

你可以这样做(假设你想要所有匹配至少一列的行):

public Cursor searchDB(String query) { 
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID, KEY_COLUMN1, KEY_COLUMN2,
    KEY_COLUMN3 }, KEY_COLUMN1 + " LIKE" + "'%" + query + "%' OR " + KEY_COLUMN2 + 
    " LIKE" + "'%" + query + "%' OR " + KEY_COLUMN3 + " LIKE" + "'%" + query + "%'", 
    null, null, null, null, null); 
} 
Run Code Online (Sandbox Code Playgroud)