如何从 Sqlite 数据库中的多个列中搜索字符串并在 listview 中搜索 returns 结果?
How to search a String from multiple columns in an Sqlite database and returns the results in listview?
我正在尝试从我的数据库中搜索一个主要包含 3 列(问题、答案和评论)的字符串,以便用户可以搜索一个词,该词在任何列中的任何实例都应出现在搜索结果。
我使用了这段代码,但它 returns 仅从第一列进行搜索。你知道我的代码有什么问题吗:
public Cursor search(String searchString) {
String[] columns = new String[]{ KEY_QUESTION,KEY_ANSWER, KEY_COMMENT};
String where = KEY_QUESTION + " LIKE ? OR "+ KEY_ANSWER + " LIKE ? ";
searchString = "%" + searchString + "%";
String[] whereArgs = new String[]{searchString};
Cursor cursor = null;
try {if (database == null) {
database = openHelper.getReadableDatabase();
}
cursor = database.query(TABLE_FLASH, columns, where, whereArgs, null, null, null);
} catch (Exception e) {
Log.d(TAG, "SEARCH EXCEPTION! " + e); // Just log the exception
}
return cursor;
}
您只提供了一个参数,但您的查询有两个参数,因此第二个参数将为空。
试试这个:
String[] whereArgs = new String[]{searchString, searchString};
我正在尝试从我的数据库中搜索一个主要包含 3 列(问题、答案和评论)的字符串,以便用户可以搜索一个词,该词在任何列中的任何实例都应出现在搜索结果。 我使用了这段代码,但它 returns 仅从第一列进行搜索。你知道我的代码有什么问题吗:
public Cursor search(String searchString) {
String[] columns = new String[]{ KEY_QUESTION,KEY_ANSWER, KEY_COMMENT};
String where = KEY_QUESTION + " LIKE ? OR "+ KEY_ANSWER + " LIKE ? ";
searchString = "%" + searchString + "%";
String[] whereArgs = new String[]{searchString};
Cursor cursor = null;
try {if (database == null) {
database = openHelper.getReadableDatabase();
}
cursor = database.query(TABLE_FLASH, columns, where, whereArgs, null, null, null);
} catch (Exception e) {
Log.d(TAG, "SEARCH EXCEPTION! " + e); // Just log the exception
}
return cursor;
}
您只提供了一个参数,但您的查询有两个参数,因此第二个参数将为空。 试试这个:
String[] whereArgs = new String[]{searchString, searchString};