Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
忽略JDBC准备语句中int的Java setNull()-mysql将插入零_Java_Mysql_Jdbc - Fatal编程技术网

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

忽略JDBC准备语句中int的Java setNull()-mysql将插入零,java,mysql,jdbc,Java,Mysql,Jdbc,我正在尝试将一个int值上载到我的数据库表中,该值可能为null。我有以下代码: 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,因此

我正在尝试将一个int值上载到我的数据库表中,该值可能为null。我有以下代码:

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,因此它可以有空值。代码确实输入了“int_val==null”if循环,因此我们知道int_val确实为null。它插入的表的COL1定义为:

intVal INT NULL COMMENT '' 
因此它可以接受空值。但是,当它处理查询时,会在COL1列中插入一个零,而不是null。在我的实际代码中,它能够以null形式输入varchar列,而没有任何问题

我在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)
(或)


您是否尝试过使用其他jdbc驱动程序(例如MariaDB)来确保问题不在驱动程序中


这个驱动程序应该与您的mysql服务器兼容。

似乎在某个地方,将值转换为JSON或从JSON转换为值时,会弄乱空值,并将零放在那里

在我测试的代码中,有很多调用,这是第一个调用,它将null设置为零,而我已经修复了可以更新它的后续位置


谢谢你的帮助-感觉v。现在真蠢

并且该列未定义为
默认值0
?您是否确保
int\u val
的实际值为
null
?(不相关-变量名称不应包含下划线。根据编码惯例,应将其称为
intVal
).您使用的是哪个版本的MySQL JDBC驱动程序?该列定义为:
intVal
intnull注释”“您是否尝试过显式使用
java.sql.Types.INTEGER
?嗨,Rahul-我需要通过JDBC作为更大查询的一部分,所以我认为这不实用
INSERT INTO table1 (COL1) 
SELECT NULL FROM dual;