我想向我的数据库提供一个查询,该查询将搜索Column1或Column2中是否存在字符串,并且只有在Column3中存在另一个String值时才显示它。
这是我在2列中搜索的工作代码:
mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
KEY_TIME, KEY_TITLE, KEY_COLOR, KEY_BODY},
KEY_BODY + " like '%" + inputText + "%' OR " + KEY_TITLE + " like '%" + inputText + "%'" , null,
null, null, KEY_TIME + " DESC", null);
我无法弄清楚如何将第三列添加到搜索中。
我试过了:
mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
KEY_TIME, KEY_TITLE, KEY_COLOR, KEY_BODY},
KEY_BODY + " like '%" + inputText + "%' OR " + KEY_TITLE + " like '%" + inputText + "%' AND " + KEY_COLOR + "like '%" + colorvalue + "%'" , null,
null, null, KEY_TIME + " DESC", null);
但AND仅适用于“TITLE”列,而不适用于两者。我在网上搜索过但我无法理解。
您的帮助将不胜感激!
答案 0 :(得分:2)
您需要使用括号。
mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
KEY_TIME, KEY_TITLE, KEY_COLOR, KEY_BODY},
"(" + KEY_BODY + " like '%" + inputText + "%' OR " + KEY_TITLE + " like '%" + inputText + "%') AND (" + KEY_COLOR + " like '%" + colorvalue + "%')" , null,
null, null, KEY_TIME + " DESC", null);
希望这有帮助。
答案 1 :(得分:2)
我想向我的数据库提供一个查询字符串的查询 存在于Column1或Column2中,并且仅在另一个String中显示它 值列在Column3中。
所以这不应该太棘手。您需要在语句中添加支持(首先包装或条件)然后一切都应该有效。
示例:强>
String query = "select * from SomeTable
where (column1 like ? and column2 like ?) and column3 like ?";
String[] params = {"%" + param1 + "%", "%" + param2 + "%", "%" + param3 + "%"};
Cursor c = db.rawQuery(query, params);
让我知道。
注意:我真的不喜欢你的“训练”方法。我建议您使用参数化状态,这些更易于阅读,比经典“硬编码”状态更安全。不要忘记SQL
注射可能存在危险。