JavaPreparedStatement设置NULL参数

标签 java oracle jdbc

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?如果是后者,那么什么时候使用它有用?您是否真的得到了预期的结果?

我是在以下堆栈溢出问题的后面问这个

SQL is null and = null

最佳答案

不,准备好的语句不会将 = 替换为 IS。您的代码对此负责。就像您负责使用 something = NULL 而不是 something IS NULL 进行查询一样。

能够将事物设置为 null 的目的是用于更新或插入语句,或者在您正确使用 isis 不同于.

它也用于空条件检查,例如 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/

相关文章:

java - 如何在准备好的语句中实现 like 运算符?

java - XML 解析到 MySQL 数据库

java - 未找到 jbpm 7.8 业务中心

java - 扫描仪跳过新行

java - android 如何从数据库中删除第一个插入的项目

regex - Oracle Regex 替换负前瞻

java - 如何使用java程序执行oraenv脚本?

sql - Oracle LIMIT 和 1000 列限制

java - 在 Java 线程之间分配数据库读取作业的最佳方式

java - 我是不是误解了 Java Bean 方法命名约定,或者这是一种异常情况?