【发布时间】: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)。