JavaPreparedStatement 允许您为给定参数设置一个值或将其设置为 NULL
SELECT *
FROM ADDRESS
WHERE ADDRESS_LINE1 = ?
所以我们可以编写代码来设置这个参数:
if (addressLine1 != null) {
preparedStatement.setString(1, addressLine1);
} else {
preparedStatement.setNull(1, VARCHAR);
}
但是,它还声明您永远不应该使用 = 运算符将值与 null 进行比较,而实际上使用 IS 运算符进行 null 比较。
准备好的语句实际上是在幕后将 = 运算符替换为 IS,还是仍然使用 = 运算符插入 null?如果是后者,那么什么时候使用它有用?您是否真的得到了预期的结果?
我是在以下堆栈溢出问题的后面问这个
最佳答案
不,准备好的语句不会将 =
替换为 IS
。您的代码对此负责。就像您负责使用 something = NULL
而不是 something IS NULL
进行查询一样。
能够将事物设置为 null 的目的是用于更新或插入语句,或者在您正确使用 is
或 is 不同于
.
它也用于空条件检查,例如 where ?为 null 或某些 = ?
与
String something = "xyz"; // or String something = null;
statement.setString(1, something);
statement.setString(2, something);
关于JavaPreparedStatement设置NULL参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147967/