Ответ 1
Я использую setObject()
исключительно для MySQL, и у меня никогда не было проблем с ним. Я не могу говорить для других баз данных или других поставщиков.
Можно ли использовать метод 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);
}
}
}
Я использую setObject()
исключительно для MySQL, и у меня никогда не было проблем с ним. Я не могу говорить для других баз данных или других поставщиков.
У вас может быть проблема с Blobs или специализированными полями даты, такими как MSSQL DateTimeOffeet.
Также я обнаружил проблему "Невозможно преобразовать между java.lang.Character и JAVA_OBJECT."
Если параметр является единственным символьным типом.
if (param instanceof Character) {
param = "" + param;
}