Android中所有记录的SQL where子句参数

时间:2014-12-22 09:41:20

标签: android database sqlite

我试图在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类型,但仍然无法使其工作。

非常感谢。 劳伦斯

1 个答案:

答案 0 :(得分:2)

  

正如我从其他帖子中读到的并在谷歌上搜索过,似乎如果我传递了一个&#34; null&#34;字符串到? WHERE子句我可以返回该特定参数的所有记录。

这不正确。

要获取所有记录,请不要在您的选择中包含first_name = ?等标准。