我试图在Android中进行SQlite查询,我尝试使用"?"进行参数化WHERE子句。 因为我想要返回所有记录,如果参数选择为"任何",我尝试实现以下但是似乎没有得到正确的结果。有人可以给我一些提示吗?
String select = "SELECT * FROM person_table ";
String where = "WHERE first_name = ? AND gender = ? AND occupation = ?";
String query = select + where;
ArrayList<String> whereArgs = new ArrayList<String>();
if (!first_name.equals("Any"))
whereArgs.add(first_name);
else {
whereArgs.add("NULL");
}
if (!gender.equals("Any"))
whereArgs.add(gender);
else {
whereArgs.add("NULL");
}
if (!occupation.equals("Any"))
whereArgs.add(occupation);
else {
whereArgs.add("NULL");
}
String [] whereArgsStrArray = new String[whereArgs.size()];
whereArgsStrArray = whereArgs.toArray(whereArgsStrArray);
Cursor cursor = db.rawQuery(query,whereArgsStrArray);
正如我从其他帖子中读到的并在谷歌上搜索过,似乎如果我传递了一个&#34; null&#34;字符串到? WHERE子句我可以返回该特定参数的所有记录。我试过&#34; NULL&#34;,&#34; null&#34;或者在whereArgs数组中使用null类型,但仍然无法使其工作。
非常感谢。 劳伦斯
答案 0 :(得分:2)
正如我从其他帖子中读到的并在谷歌上搜索过,似乎如果我传递了一个&#34; null&#34;字符串到? WHERE子句我可以返回该特定参数的所有记录。
这不正确。
要获取所有记录,请不要在您的选择中包含first_name = ?
等标准。