Подтвердить что ты не робот

Метод setObject() PreparedStatement

Можно ли использовать метод setObject() для PreparedStatement для всех типов данных (например, string, int, double..)?

Каковы потенциальные проблемы, которые я вижу, если я использую это?

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

Ответ 1

Я использую setObject() исключительно для MySQL, и у меня никогда не было проблем с ним. Я не могу говорить для других баз данных или других поставщиков.

Ответ 2

У вас может быть проблема с Blobs или специализированными полями даты, такими как MSSQL DateTimeOffeet.

Также я обнаружил проблему "Невозможно преобразовать между java.lang.Character и JAVA_OBJECT."

Если параметр является единственным символьным типом.

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