【问题标题】:Inserting null to an Integer column using JDBC使用 JDBC 将空值插入整数列
【发布时间】:2013-01-08 23:46:52
【问题描述】:

我有一个 sql 列 PROTOCOL,它可以为空并且对表有约束

PROTOCOL IN (1, 2, 3)

另外,由于它可以为空,我想将空值设置并获取到表中

但我不能将 setIntgetInt 设为 null。如何使用 JDBC 将空列设置为空

setInt(4,null);

【问题讨论】:

  • 你试过setObject()方法吗?
  • 试试setObject(4, null)
  • @BheshGurung Bah,打败我=p
  • 设置为null后如何获取;getInt会返回null吗?

标签: java sql jdbc


【解决方案1】:

除了Smit's answer

如果你想插入一个Integer-object到一个可能是null的数据库中,你可以使用

statement.setObject(4, yourObject, java.sql.Types.INTEGER);

而不是

if (yourObject == null) {
    statement.setNull(4, java.sql.Types.INTEGER);
else {
    statement.setInt(4, yourObject);
}

【讨论】:

  • java8 中的新功能? statement.setObject(4, yourObject, java.sql.JDBCType.INTEGER);
  • 您实际上不需要提供 JDBCType | sql.Types jdbc 自己计算出来。或者至少 MSSQL 驱动程序可以。
  • 在 DB2 中,这不起作用:java.sql.SQLFeatureNotSupportedException: setObject not implemented
  • @Jaja 你指的是我的回答,还是 Marthinus Engelbrecht 的评论?
  • @Qw3ry,不是指你的答案,我的意思是,应该有 java.sql.Types 而不是 java.sql.JDBCType
【解决方案2】:

尝试使用。

   pst.setNull(4, java.sql.Types.INTEGER);  //pst is prepared statement instance.

Interface PreparedStatement.setNull API

Mapping of java.sql.Types to SQL types

附: :已编辑以反映 Java 8 更新。

【讨论】:

  • 设置为null后如何获取;getInt会返回null吗?
  • @constantlearner 我从来没有机会使用这个,但你当然可以试试。
  • @Code-Apprentice 仅当您事先知道要插入 null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 2014-08-10
  • 2015-06-20
  • 2019-10-20
  • 1970-01-01
  • 2018-03-30
  • 2012-10-14
相关资源
最近更新 更多