当前位置:   article > 正文

JDBC – PreparedStatement – 如何设置 Null 值?_preparedstatement null

preparedstatement null

介绍

Java 数据库连接 (JDBC) API 允许 Java 程序员访问不同的关系和 NoSQL 数据库,如 Oracle、MySQL、SQL Server 等。它有助于存储、访问和操作存储在这些数据库中的数据。

在这篇文章中,我们将探讨如何在 PreparedStatement 中设置 NULL 值。
 

空字符串数据类型

对于 String 数据类型,在 SQL 查询中设置为参数的值是否为 NULL 无关紧要。  

其他数据类型,如 Integer、Float、Double、Date 等。

对于IntegerFloatDoubleDate等数据类型,我们必须显式调用 setNull 方法。

例子

  1. String name = null;
  2. Long id = null;
  3. PreparedStatement ps = connection.prepareStatement("select * from person where first_name = ? and id = ?");
  4. ps.setString(1,name);
上面的行将执行而不抛出任何异常
ps.setLong(2, id);

上面这行代码,由于id为null,所以会抛出java.lang.NullPointerException

解决方案

检查值的可空性并调用setNull方法,即
 
  1. if( id == null ) {
  2. ps.setNull(2, Types.INTEGER);
  3. }else {
  4. ps.setLong(2, id);
  5. }
JDBC 要求程序员使用 java.sql.Types 为 Null 值指定正确的数据类型。

完整代码

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.Types;
  6. public class JDBCNullExample {
  7. public static void main(String[] args) throws Exception{
  8. Connection connection = null;
  9. try {
  10. connection = openConnection();
  11. String name = null;
  12. Long id = null;
  13. PreparedStatement ps = connection.prepareStatement("select * from person
  14. where first_name = ? and id = ?");
  15. ps.setString(1,name);
  16. if(id == null) {
  17. ps.setNull(2, Types.INTEGER);
  18. }else {
  19. ps.setLong(2, id);
  20. }
  21. ResultSet rs = ps.executeQuery();
  22. System.out.println(rs.getFetchSize());
  23. rs.close();
  24. }catch(Exception exception) {
  25. exception.printStackTrace();
  26. }finally {
  27. if(connection != null) {
  28. connection.close();
  29. }
  30. }
  31. }
  32. private static Connection openConnection() throws Exception{
  33. Class.forName("oracle.jdbc.OracleDriver");
  34. return DriverManager.getConnection("jdbc:oracle:thin:@IP:orcl", "user","password");
  35. }
  36. }

结论

除了 String 数据类型,如果其他数据类型的值为 Null,我们必须显式指定数据类型。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/141603
推荐阅读
相关标签
  

闽ICP备14008679号