Android SQLiteDatabase 中使用 like 查询

在名字表中有3个名字:Allakhazam, Beatbox 和 Cunning

public Cursor fetchNamesByConstraint(String filter) {

    mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID,
            KEY_NAME }, KEY_NAME + " LIKE ?",
            new String[] { filter }, null, null, null,
            null);

    return mCursor;
}

我使用A作为filter调用函数,但是光标返回一个0计数,这时候本应该是返回1的。如何修改代码呢?

这个语句将会返回所有的记录,这些记录的 keyname 是指定的字符串。如果你使用 wild card,然后就可以获得预期结果:

mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID,
            KEY_NAME }, KEY_NAME + " LIKE ?",
            new String[] { filter+"%" }, null, null, null,
            null);

在filter 中会显示所有的记录

mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID,
            KEY_NAME }, KEY_NAME + " LIKE ?",
            new String[] {"%"+ filter+ "%" }, null, null, null,
            null);