我已经安装了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)?
答案 0 :(得分: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);
}
答案 1 :(得分:0)
你需要传递“Null”代替“all Columns”。 这将搜索行中的所有列
答案 2 :(得分:0)
allColumns + " LIKE" + "'%" + query + "%'"
我认为你需要尝试这样的事情
column1 + " LIKE '%' AND "+column2 + " LIKE '%' AND " etc.,
注意:可能存在语法错误。这是手工打字。