gpt4 book ai didi

java - Android SQLite 查询在选择器中有问号,在 selectionArgs 中有空

转载 作者:行者123 更新时间:2023-11-30 11:50:41 25 4
gpt4 key购买 nike

在 android 中,如果我像下面这样调用 SQLiteDatabase 方法查询:

sqlitedb.query("mytable", null, "name = ?",
new String[] {null}, null, null, null);

预期的结果是什么?

我希望出现 NullPointerException 但似乎我得到了一个游标,它似乎具有与我执行的最后一个非空 selectionArgs 查询相同的数据。这是预期的行为吗,我想我必须在调用此方法之前进行自己的空值检查,而不是传递“name IS NULL”以获得正确的结果?

最佳答案

这与 NPE @satur9nine 无关。它与 SQL 参数处理有关。我已经确认你是正确的。使用 SQLite,如果你发出:

SELECT * FROM `mytable ` WHERE `name` = ?

如果表中的行具有空 name 字段,则使用空参数,您将得不到任何结果。您将不得不发出查询:

SELECT * FROM `mytable ` WHERE `name` IS NULL

这不仅仅是Android,还有JDBC。这是一个数据库问题。 SQLite、H2 和 MySQL 都以这种方式运行。来自这个很棒的 SQL 教程:

http://www.w3schools.com/sql/sql_null_values.asp

引用:

It is not possible to test for NULL values with comparison operators, such as =, <, or <>.

关于java - Android SQLite 查询在选择器中有问号,在 selectionArgs 中有空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com