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

QueryRunner#fillStatement setNull all database fix proposal

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.1
    • Fix Version/s: None
    • Labels:
      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

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

              Dates

              • Created:
                Updated:
                Resolved: