Tôi có thể sử dụng phương thức setObject()
của PreparedStatement
cho tất cả các kiểu dữ liệu (như string
, int
, double
..)?setObject() của PreparedStatement
Các vấn đề tiềm năng tôi thấy nếu tôi sử dụng?
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);
}
}
}
Có, bạn có thể, và nó sẽ hoạt động, và tôi nghi ngờ đây là những thư viện như Hibernate cũng vậy. Như thường lệ, một số trình điều khiển có thể chỉ là một chút lỗi trong một số trường hợp góc. – Thilo
Ví dụ, Oracle dường như có rắc rối với setNull: http://svn.apache.org/viewvc/commons/proper/dbutils/trunk/src/main/java/org/apache/commons/dbutils/AbstractQueryRunner.java? revision = 1362322 & view = markup # l215 – Thilo
http://stackoverflow.com/questions/19421374/arithmetic-overflow-or-other-arithmetic-exception-when-using-setobject-method Tham khảo liên kết này để biết thêm chi tiết. – Eddy