【问题标题】:java.sql.BatchUpdateException: Incorrect integer value: '' for column '' at row 1 when setting value to nulljava.sql.BatchUpdateException:不正确的整数值:当将值设置为空时,第 1 行的列 '' ''
【发布时间】:2022-01-02 23:36:35
【问题描述】:

我正在尝试使用 java JDBC 驱动程序将空值插入 Integer Mysql 列。

        Connection con;
        con = MySqlConnect.getConnection(accountName);
        con.setAutoCommit(false);
        PreparedStatement stmt = con.prepareStatement("INSERT INTO TABLE_NAME (COLUMN_NAME) VALUES (?)");
        stmt.setNull(1, Types.INTEGER);
        stmt.addBatch();
        stmt.executeBatch();

但我收到此错误:

java.sql.BatchUpdateException:不正确的整数值:第 1 行的列 'COLUMN_NAME' 的''

我不明白为什么我不能插入这个值(以及为什么它写成 '' 而不是 null)。 表的架构包括

COLUMN_NAMEint(10) 默认为空,

如果使用浮点数据类型重现另一个场景:

FLOAT_COLUMNfloat(10) 默认为空,

并将 setNull 行更改为:

stmt.setNull(1, Types.FLOAT);

它可以工作(所以对于浮点数据类型不是 int)。

【问题讨论】:

  • 请包含INSERT_QUERY的值。
  • @TheImpaler 我添加了它
  • 这对你有用吗stmt.setNull(1, java.sql.Types.NULL);stmt.setInt(1, java.sql.Types.NULL);
  • stmt.setNull(1, java.sql.Types.NULL); -> 相同的异常 stmt.setInt(1, java.sql.Types.NULL); -> 不编译
  • @user3696953 使用stmt.setInt(1, java.sql.Types.NULL) 会将COLUMN_NAME 的值设置为常量java.sql.Types.NULL 的值(== 0)。

标签: java mysql sql jdbc


【解决方案1】:

您是否尝试: stmt.setNull(paramIndex, Types.BIGINT);?

【讨论】:

猜你喜欢
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
相关资源
最近更新 更多