You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Dennis Lundberg (JIRA)" <ji...@apache.org> on 2008/03/16 22:35:24 UTC

[jira] Updated: (DBUTILS-31) fillStatement setNull bug with the Derby JDBC driver

     [ https://issues.apache.org/jira/browse/DBUTILS-31?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dennis Lundberg updated DBUTILS-31:
-----------------------------------

    Description: 
This has been documented many times before, but I was not happy with the existing code fixes.  The following small code snippet should fix it for all conforming JDBC drivers.

{code}
    protected void fillStatement(PreparedStatement stmt, Object[] params)
        throws SQLException {

        if (params == null) {
            return;
        }
        ParameterMetaData pmd = stmt.getParameterMetaData();
        for (int i = 0; i < params.length; i++) {
            if (params[i] != null) {
                stmt.setObject(i + 1, params[i]);
            } else {
                stmt.setNull(i + 1, pmd.getParameterType(i + 1));
            }
        }
    }
{code}

The only difference is that you get the parameter meta data and pass that type information to the setNull method.  This should neatly fix this problem, with a very slight additional overhead.

  was:
This has been documented many times before, but I was not happy with the existing code fixes.  The following small code snippet should fix it for all conforming JDBC drivers.

    protected void fillStatement(PreparedStatement stmt, Object[] params)
        throws SQLException {

        if (params == null) {
            return;
        }
        ParameterMetaData pmd = stmt.getParameterMetaData();
        for (int i = 0; i < params.length; i++) {
            if (params[i] != null) {
                stmt.setObject(i + 1, params[i]);
            } else {
                stmt.setNull(i + 1, pmd.getParameterType(i + 1));
            }
        }
    }

The only difference is that you get the parameter meta data and pass that type information to the setNull method.  This should neatly fix this problem, with a very slight additional overhead.


> fillStatement setNull bug with the Derby JDBC driver
> ----------------------------------------------------
>
>                 Key: DBUTILS-31
>                 URL: https://issues.apache.org/jira/browse/DBUTILS-31
>             Project: Commons DbUtils
>          Issue Type: Improvement
>    Affects Versions: 1.0
>         Environment: Derby 10.1.2.1
>            Reporter: Francis Townsend
>
> This has been documented many times before, but I was not happy with the existing code fixes.  The following small code snippet should fix it for all conforming JDBC drivers.
> {code}
>     protected void fillStatement(PreparedStatement stmt, Object[] params)
>         throws SQLException {
>         if (params == null) {
>             return;
>         }
>         ParameterMetaData pmd = stmt.getParameterMetaData();
>         for (int i = 0; i < params.length; i++) {
>             if (params[i] != null) {
>                 stmt.setObject(i + 1, params[i]);
>             } else {
>                 stmt.setNull(i + 1, pmd.getParameterType(i + 1));
>             }
>         }
>     }
> {code}
> The only difference is that you get the parameter meta data and pass that type information to the setNull method.  This should neatly fix this problem, with a very slight additional overhead.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.