使用Android搜索对话框搜索多个DB列
我已经让Android搜索对话框工作了,但我遇到的问题是我有一个3列DB表,我希望在其中搜索所有3列。以下方法仅对表的第1列执行搜索:使用Android搜索对话框搜索多个DB列,android,sqlite,search,dialog,Android,Sqlite,Search,Dialog,我已经让Android搜索对话框工作了,但我遇到的问题是我有一个3列DB表,我希望在其中搜索所有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_TABL
//--- 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)?您需要传递“Null”来代替“allColumns”。
这将搜索行中的所有列您需要传递“Null”来代替“allColumns”。
allColumns + " LIKE" + "'%" + query + "%'"
这将检查行中的所有列
allColumns + " LIKE" + "'%" + query + "%'"
我想你需要试试这样的东西
column1 + " LIKE '%' AND "+column2 + " LIKE '%' AND " etc.,
注意:可能存在语法错误。这是手写的
我想你需要试试这样的东西
column1 + " LIKE '%' AND "+column2 + " LIKE '%' AND " etc.,
注意:可能存在语法错误。它是手工输入的。您可以这样做(假设您希望所有行至少匹配一列):
您可以这样做(假设您希望所有行至少匹配一列):
传递null将导致搜索不返回任何内容。但是我知道你要做什么了……传递null会导致搜索不返回任何结果。但我明白你的想法了……我还在根据你的建议尝试组合。但查询不喜欢和。所以我尝试了KEY_COLUMN1+KEY_COLUMN2+KEY_COLUMN3+”像“+”'%“+query+“%”,结果应用程序崩溃了。不过我还在努力……我还在根据你的建议尝试组合。但查询不喜欢和。所以我尝试了KEY_COLUMN1+KEY_COLUMN2+KEY_COLUMN3+”像“+”'%“+query+“%”,结果应用程序崩溃了。但仍在努力。。。。。