【发布时间】:2013-03-12 23:03:15
【问题描述】:
PreparedStatement.setObject 的 Javadoc 说只传递 null 值是不安全的,并建议使用 setNull 代替,这需要传递列 DB 类型。
由于在 Java 中判断空值的类型并非易事,我想知道是否有任何资源列出了在流行数据库中使用空值调用 setObject 的安全性?
【问题讨论】:
标签: java jdbc prepared-statement
PreparedStatement.setObject 的 Javadoc 说只传递 null 值是不安全的,并建议使用 setNull 代替,这需要传递列 DB 类型。
由于在 Java 中判断空值的类型并非易事,我想知道是否有任何资源列出了在流行数据库中使用空值调用 setObject 的安全性?
【问题讨论】:
标签: java jdbc prepared-statement
oracle 的 java 文档上有一个相当有趣的页面。
阿比纳夫
根据 EJP 的 cmets 编辑:
按照 Java 文档,最好遵循 setObject 的声明并推荐:
void setObject(int parameterIndex, Object x, int targetSqlType)
注意:并非所有数据库都允许将非类型 Null 发送到后端。为了获得最大的可移植性,应该使用 setNull 或 setObject(int parameterIndex, Object x, int sqlType) 方法来代替 setObject(int parameterIndex, Object x)。
可以使用上面链接的映射列表来识别对象类型。
【讨论】: