在Android应用中搜索SQLite数据库

时间:2013-02-06 11:30:59

标签: android android-sqlite

我在我的应用程序中有一个搜索功能。 它的工作原理几乎正常,我的问题是它只能从开头就捕捉到类似于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;
}

2 个答案:

答案 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 ?";
}