1

我已经让 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

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

//--- 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 

但这会使应用程序崩溃。那么如何修改方法来搜索三列(Column1、Column2 和 Column3)呢?

4

3 回答 3

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); 
} 
于 2012-05-31T04:32:28.910 回答
0

您需要通过“Null”代替“allColumns”。这将搜索该行中的所有列

于 2012-05-30T19:49:09.840 回答
0
allColumns + " LIKE" + "'%"        + query + "%'"

我认为你需要尝试这样的事情

column1 + " LIKE '%' AND "+column2        + " LIKE '%' AND " etc.,

注意:可能存在语法错误。它是手写的。

于 2012-05-30T19:49:30.270 回答