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方面有问题:有关更多详细信息,请参阅此链接。