QueryRunner#fillStatement setNull all database fix proposal
-----------------------------------------------------------
Key: DBUTILS-44
URL: https://issues.apache.org/jira/browse/DBUTILS-44
Project: Commons DbUtils
Issue Type: Bug
Affects Versions: 1.1
Reporter: Julien Aymé
Fix For: 1.2
There is currently many open issues ( DBUTILS-14, DBUTILS-31, DBUTILS-39 and
DBUTILS-41) concerning the problem with setNull(i+1, Types.VARCHAR) in the
QueryRunner#fillStatement method when the given object is null.
I use Commons DbUtils in several projects, and I have found a workaround which
works for any database:
The problem is that when the object is null, the API does not know to which SQL
TYPE it should map the object to.
I've added an Interface, named SQLParam, which exactely resolve this problem:
public interface SQLParam {
/**
* Returns the object
*
* @return the object
*/
public Object getObject();
/**
* Returns the SQL type of the object,
* must be one of [EMAIL PROTECTED] java.sql.Types}
*
* @return the type of the object
* @see java.sql.Types
*/
public int getType();
}
Then I've changed the QueryRunner API, by replacing all Object param and
Object[] params by SQLParam param and SQLParam[] params (in a new
QueryRunnerSQLParam class).
It does work just well for me; any comments gladly appreciated.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.