Uploaded image for project: 'Commons DbUtils'
  1. Commons DbUtils
  2. DBUTILS-44

QueryRunner#fillStatement setNull all database fix proposal

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.1
    • None
    • None

    Description

      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 {@link 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.

      Attachments

        1. QueryRunnerSQLParam.java
          19 kB
          Julien Aymé
        2. SQLParam.java
          0.5 kB
          Julien Aymé
        3. SQLParamBuilder.java
          8 kB
          Julien Aymé
        4. SQLParamImpl.java
          4 kB
          Julien Aymé

        Activity

          People

            Unassigned Unassigned
            julien.ayme@gmail.com Julien Aymé
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: