PreparedStatement的setObject()方法

时间:2012-08-03 10:00:18

标签: java jdbc

我可以对setObject()使用PreparedStatement方法处理所有数据类型(例如Stringintdouble)吗?

如果我使用它会有什么潜在的问题?

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);
            }
        }
    }

2 个答案:

答案 0 :(得分:10)

我将setObject()专门用于MySQL,我从未遇到任何问题。我不能代表其他数据库或其他供应商。

答案 1 :(得分:0)

您可能会遇到Blob或MSSQL DateTimeOffeet等专用日期字段的问题。

此外,我发现了一个问题“无法在java.lang.Character和JAVA_OBJECT之间进行转换。”

如果参数是单个字符类型。

    if (param instanceof Character) {
        param = "" + param;
    }