【发布时间】:2012-08-03 10:00:18
【问题描述】:
我可以对所有数据类型(如String、int 或double)使用PreparedStatement 的setObject() 方法吗?
如果我使用它会有什么潜在问题?
protected void fillStatement(PreparedStatement stmt, Object[] params)
throws SQLException {
if (params == null) {
return;
}
for (int i = 0; i < params.length; i++) {
if (params[i] != null) {
stmt.setObject(i + 1, params[i]);
} else {
stmt.setNull(i + 1, Types.OTHER);
}
}
}
【问题讨论】:
-
是的,你可以,而且它应该可以工作,我怀疑这也是像 Hibernate 这样的库所做的。像往常一样,在某些极端情况下,一些驱动程序可能只是有点问题。
-
比如Oracle好像setNull有问题:svn.apache.org/viewvc/commons/proper/dbutils/trunk/src/main/…
-
stackoverflow.com/questions/19421374/… 更多详情请参考此链接。