PreparedStatement setNull(..)
Java PreparedStatement提供了一个明确设置Null值的可能性。 这种可能性是:
prepStmt.setNull(<n>, Types.VARCHAR)
这个调用的语义是否与使用一个null值的setType相同?
prepStmt.setString(null)
?
本指南说:
6.1.5作为IN参数发送JDBC NULL
setNull方法允许程序员以IN参数的forms向数据库发送JDBC NULL(通用SQL NULL)值。 但是请注意,还必须指定参数的JDBCtypes。
当Java空值传递给setXXX方法(如果需要Java对象作为参数),JDBC NULL也将被发送到数据库。 但是,只有在指定了JDBCtypes的情况下,setObject方法才能取null值。
但要小心这个….
Long nullLong = null; preparedStatement.setLong( nullLong );
– 空指针exception –
因为原型是
setLong( long )
不
setLong( Long )
很好的一个赶上你呃。
最后,我做了一个小testing,在编程时,我发现没有setNull(..)方法,就没有办法为Java基元设置空值。 对于对象的两种方式
setNull(..)
和
set<ClassName>(.., null))
performance方式也一样。
你也可以考虑使用preparedStatement.setObject(index,value,type);