Java PreparedStatement的setObject()方法
我可以对所有数据类型(如Java PreparedStatement的setObject()方法,java,jdbc,Java,Jdbc,我可以对所有数据类型(如String、int或double)使用PreparedStatement的setObject()方法吗 如果我使用它,潜在的问题是什么 protected void fillStatement(PreparedStatement stmt, Object[] params) throws SQLException { if (params == null) { return; }
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);
}
}
}
受保护的void fillStatement(PreparedStatement stmt,Object[]params)
抛出SQLException{
if(params==null){
返回;
}
对于(int i=0;i
我只在MySQL中使用setObject()
,我从来没有遇到过问题。我不能代表其他数据库或其他供应商说话。您可能会遇到BLOB或MSSQL DATETIMEOFET等专用日期字段的问题
我还发现了一个问题“无法在java.lang.Character和java_对象之间转换”
如果参数是单字符类型
if (param instanceof Character) {
param = "" + param;
}
是的,您可以,而且它应该可以工作,我怀疑像Hibernate这样的库也可以这样做。和往常一样,有些驱动程序在某些情况下可能只是有点问题。例如,Oracle似乎在setNull方面有问题:有关更多详细信息,请参阅此链接。