java preparedstatement null_PreparedStatement将空字符串转换为null吗?

我正在使用MySQL及其最后一个可用的JDBC驱动程序,在User表上对NOT NULL,id的所有字段name进行约束, password和email。

在我的Java EE应用程序中,我首先用这种方式调用了一个简单的Statement:

statement = connection.createStatement();

statement.executeUpdate( "INSERT INTO User (name, password, email) "

+ "VALUES ('" + paramName + "', '" + paramPassword + "', '" + paramEmail + "');" );

paramName,paramPassword和paramEmail是字符串。我将空字符串传递给此请求,并且在表中成功插入了一个带有空值的新行,因为MySQL认为空字符串与空条目不同。

然后,我改为使用PreparedStatement:

preparedStatement = connection.prepareStatement( "INSERT INTO User (name, password, email) VALUES(?, ?, ?);" );

preparedStatement.setString( 1, paramName );

preparedStatement.setString( 2, paramPassword );

preparedStatement.setString( 3, paramEmail );

preparedStatement.executeUpdate();

但是这一次,当我将空字符串传递给请求时,我收到以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列'name'不能为null

所以这是我的问题:PreparedStatement或者它的setString()方法是否将空字符串转换为空值?我查了一下,但没有在javadoc中找到有关此行为的任何信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值