繁体   English   中英

如何逃避使用PreparedStatement.setNull?

[英]How to escape from use PreparedStatement.setNull?

我的数据库中有一个很大的表。 其中一些字段可能为空。

我只想逃避使用:

PreparedStatement.setNull(index, Type.X)

喜欢:

if(obj.getSomaData() == null){
  insertStmt.setNull(++i, java.sql.Types.VARCHAR);
}else{
  insertStmt.setString(++i, obj.getSomaData());
}

有更好更好的方法吗?

PS:我正在使用PostgreSQL。

setNull的主要用例是将原始类型设置为null,并处理一些驱动程序无法得知参数数据类型且需要明确指示的极端情况。

在大多数情况下,您应该可以使用setString(idx, null) (或其他对象类型的setXXX )。

引用JDBC 4.2第13.2.2.4节:

如果将Java null传递给采用Java对象的任何setter方法,则该参数将设置为JDBC NULL

对于“未类型化”的null (例如,使用setObject )有一个例外,建议为最大的可移植性,应使用setNull或带有类型参数的setObject ,因为并非所有数据库都支持无类型信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM