0

我有这样的代码,它显示使用 KEY_CODE 获得的每条记录。但我想显示只有我插入的 KEY_CODE 和 KEY_NAME 的记录。我需要做什么?

else {
    mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID,
    KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
    KEY_CODE + " like '%" + inputText + "%'", null,
    null, null, null, null);
}
4

3 回答 3

0

在 SQL 中,您可以使用 AND 或 OR 构建逻辑表达式。

如果您必须输入要与相应字段匹配的输入(即两者都必须匹配),则应使用 AND:

mCursor = mDb.query(true, SQLITE_TABLE,
                    new String[] { KEY_ROWID, KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION },
                    KEY_CODE + " LIKE ? AND " + KEY_NAME + " LIKE ?",
                    new String[] { "%"+inputText+"%", "%"+inputName+"%" },
                    null, null, null, null);

如果您有一个可以在任一字段中匹配的输入,您应该使用 OR:

mCursor = mDb.query(true, SQLITE_TABLE,
                    new String[] { KEY_ROWID, KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION },
                    KEY_CODE + " LIKE ? OR " + KEY_NAME + " LIKE ?",
                    new String[] { "%"+inputText+"%", "%"+inputText+"%", },
                    null, null, null, null);

请注意,您应该始终?对字符串值使用参数 (),以避免格式问题和SQL 注入攻击

于 2013-10-27T08:49:02.997 回答
0

尝试这个:

else {
    mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID,
    KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
    KEY_CODE + " like '%" + inputText + "%' AND " + KEY_NAME + " like '%" + inputName + "%'", null,
    null, null, null, null);
}  

如果您想要代码和名称完全匹配,请不要使用 LIKE 使用 =

else {
    mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID,
    KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
    KEY_CODE + " = '" + inputText + "' AND " + KEY_NAME + " = '" + inputName +"'", null,
    null, null, null, null);
}  
于 2013-10-26T20:26:13.740 回答
0

试试这个

else {
    mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID,
    KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
    KEY_CODE + " like '%" + inputTextForKEY_CODE + "%' AND" + KEY_NAME + " like '%" + inputTextForKEY_NAME + "%'" , null,
    null, null, null, null);
}
于 2013-10-26T20:29:26.463 回答