Inserting/updating null in a timestamp field with PostgreSQL 8.x
----------------------------------------------------------------
Key: DBUTILS-41
URL: https://issues.apache.org/jira/browse/DBUTILS-41
Project: Commons DbUtils
Issue Type: Bug
Affects Versions: 1.1
Environment: Linux CentOS 2.6.18-8.1.4.el5, PostgreSQL 8.2.4, Java
1.6.0_01
Reporter: Malcolm McLean
Priority: Minor
When inserting or updating a value to null on timestamp (date) field in a
PostgreSQL database, the following error is returned:
column "foo" is of type timestamp without time zone but expression is of type
character varying
Overriding the fillStatement method by doing something like:
QueryRunner run = new QueryRunner() {
/* (non-Javadoc)
* @see
org.apache.commons.dbutils.QueryRunner#fillStatement(java.sql.PreparedStatement,
java.lang.Object[])
*/
@Override
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 {
// VARCHAR works with many drivers regardless
// of the actual column type (Maybe not with Postgres 8.x). Oddly,
NULL and
// OTHER don't work with Oracle's drivers.
stmt.setNull(i + 1, Types.NULL);
}
}
}
};
work, but it will have a problem if other databases are used instead of
PostgreSQL.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.