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.

Reply via email to