我在我的应用程序中有一个搜索功能。 它的工作原理几乎正常,我的问题是它只能从开头就捕捉到类似于searchWord的结果。
例如: 如果searchWord是“ada”,则结果将包含START WITH“ada”的所有记录,但不包含其中包含“ada”的记录。
我知道它必须只是一点点修改,但这是我做过的第一个数据库处理。
那么我该如何修改它以搜索任何包含,而不是以开头?
代码:
public Cursor getMatchingFromContacts(String searchWord) throws SQLException {
String queryString = "SELECT _id, full_name FROM "
+ SF_CONTACT_TABLE;
if (searchWord != null) {
searchWord = searchWord.trim() + "%";
queryString += " WHERE " + FULL_NAME + " LIKE ?";
}
String params[] = { searchWord };
if (searchWord == null) {
params = null;
}
try {
Cursor cursor = db.rawQuery(queryString,
params);
if (cursor != null) {
cursor.moveToFirst();
return cursor;
}
} catch (SQLException e) {
Log.e("AutoCompleteDbAdapter", e.toString());
throw e;
}
return null;
}
答案 0 :(得分:3)
只需在此修改您的阻止:
if (searchWord != null) {
searchWord = "%" + searchWord.trim() + "%";
queryString += " WHERE " + FULL_NAME + " LIKE ?";
}
答案 1 :(得分:2)
试试这个..
if (searchWord != null)
{
searchWord = "%" + searchWord + "%";
queryString += " WHERE " + FULL_NAME + " LIKE ?";
}