我的DataBase中有一个非常大的表。其中一些字段可能为空。
我只想逃避使用:
PreparedStatement.setNull(index, Type.X)
像:
if(obj.getSomaData() == null){
insertStmt.setNull(++i, java.sql.Types.VARCHAR);
}else{
insertStmt.setString(++i, obj.getSomaData());
}
有更好更清洁的方法吗?
P.S。:我正在使用PostgreSQL。
答案 0 :(得分:3)
setNull
的主要用例是将基本类型设置为null,并处理一些边缘情况,其中驱动程序无法知道参数的数据类型,需要明确指示。< / p>
在大多数情况下,您应该能够使用setString(idx, null)
(或另一种对象类型的setXXX
)。
引用JDBC 4.2第13.2.2.4节:
如果将Java
null
传递给任何带有Java对象的setter方法,则该参数将设置为JDBCNULL
。
对“无类型”&#39;进行了例外处理。 null
(例如,使用setObject
),建议为了获得最大的可移植性,您应该使用setNull
或带有类型参数的setObject
,而不是所有数据库支持类型信息。