gpt4 book ai didi

JDBC 准备语句中 int 的 Java setNull() 被忽略 - mysql 插入零

转载 作者:行者123 更新时间:2023-11-29 22:02:23 24 4
gpt4 key购买 nike

我正在尝试将 int 值上传到我的数据库表,该值可能为空。我有以下代码:

ps = connection.prepareStatement("INSERT INTO table1 (COL1) VALUES(?)");

if( int_val == null) {
ps.setNull(1, java.sql.Types.INTEGER);
}
else {
ps.setInt(1, int_val);
}

int_val 变量是一个 java.lang.Integer,因此它可以有一个 null 值。代码确实进入了“int_val == null”if循环,所以我们知道int_val确实为null。它插入的表的 COL1 定义为:

intVal INT NULL COMMENT '' 

所以它可以取空值。但是,当它处理查询时,它会在 COL1 列中插入零而不是空值。在我的实际代码中,它能够将 varchar 列输入为 null,完全没有问题。

我在 glassfish 安装中使用的 MySQL jar 是:

com.mysql.jdbc_5.1.5.jar mysql-connector-java-5.1.35-bin.jar – 

有什么想法吗?我是否做了一些非常明显错误的事情?

最佳答案

正如已经评论过的,除非您已经为该列定义了默认值并考虑到该列接受NULL;您可以将 INSERT 语句更改为如下所示,以将 null 插入到列中。这严格来说是 MySQL 解决方案,但我不确定 Java 中是否存在类似的方法来实现相同的目的。

INSERT INTO table1 (COL1) VALUES(NULL)

(或)

INSERT INTO table1 (COL1) 
SELECT NULL FROM dual;

关于JDBC 准备语句中 int 的 Java setNull() 被忽略 - mysql 插入零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32498908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com