0

我的应用程序中有一个搜索功能。它几乎可以正常工作,我的问题是它只从一开始就捕获类似于 searchWord 的结果。

例如:如果 searchWord 是“ada”,则结果将包含所有以“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;
}
4

2 回答 2

3

只需在此处修改您的块:

if (searchWord != null) {
    searchWord = "%" + searchWord.trim() + "%";
    queryString += " WHERE " + FULL_NAME + " LIKE ?";
}
于 2013-02-06T11:44:18.923 回答
2

试试这个..

if (searchWord != null) 
{
    searchWord = "%" + searchWord + "%";
    queryString += " WHERE " + FULL_NAME + " LIKE ?";
}
于 2013-02-06T11:56:31.020 回答