Java PreparedStatement提供了显式设置空值的可能性。这种可能性是:
prepStmt.setNull(parameterIndex, Types.VARCHAR);
此调用的语义是否与使用带有空参的特定setType时相同?
prepStmt.setString(null);
发布于 2009-08-31 13:23:20
此guide表示:
6.1.5将JDBC NULL作为IN参数发送
setNull方法允许程序员将JDBC NULL (通用SQL NULL)值作为IN参数发送到数据库。但是,请注意,仍然必须指定参数的JDBC类型。
当将Java NULL值传递给setXXX方法时(如果它将Java对象作为参数),也会将JDBC null发送到数据库。但是,只有在指定了JDBC类型的情况下,方法setObject才能接受空值。
所以,是的,它们是等价的。
发布于 2012-03-03 10:31:55
但要注意这一点...
Long nullLong = null;
preparedStatement.setLong( nullLong );
-thows空指针异常-
因为原型是
setLong( long )
不
setLong( Long )
很高兴能抓到你,嗯。
发布于 2009-09-01 11:10:02
最后,我做了一个小测试,在我编写它的时候,我突然想到,如果没有setNull(..)方法中,将无法为Java原语设置空值。对象的两种方式
setNull(..)
和
set<ClassName>(.., null))
以同样的方式行事。
https://stackoverflow.com/questions/1357429
复制相似问题