DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=31045>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=31045

Null handling in Insert, Update, and Delete

           Summary: Null handling in Insert, Update, and Delete
           Product: Commons
           Version: unspecified
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Major
          Priority: Other
         Component: DbUtils
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


While using the DbUtils to perform an insert or an update into DB2 v8 I ran into
a null issue.  DbUtils uses the following to handle nulls.  DB2 is requiring the
passing in of the EXACT column type to use setNull(i,Types.*).  Using
Types.OTHER throws an exception (see after code).

DbUtils Code:

    /**
     * Fill the <code>PreparedStatement</code> replacement parameters with 
     * the given objects.
     * @param stmt
     * @param params Query replacement parameters; <code>null</code> is a valid
     * value to pass in.
     * @throws SQLException
     */
    protected void fillStatement(PreparedStatement stmt, Object[] params)
        throws SQLException {

        if (params == null) {
            return;
        }

        for (int i = 0; i < params.length; i++) {
            if (params[i] != null) {
                stmt.setObject(i + 1, params[i]);
            } else {
                stmt.setNull(i + 1, Types.OTHER);
            }
        }
    }

Exception thrown:

COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0123E  SQL data type out of
range. SQLSTATE=HY004
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown 
Source)
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown 
Source)
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeUpdate(Unknown Source)
        at PrepStmt.main(PrepStmt.java:56)
 
Code snippet that threw the exception:

Connection con = DriverManager.getConnection(url, uid, pswd);
PreparedStatement p = con.prepareStatement("insert into dac.person values (?,?)");
p.setInt(1,0); // integer column, id thing
p.setNull(2,Types.OTHER); // pretend BLOB column.  But it fails on anything.
//this one works for the blob column --> p.setBytes(2,null); 
int x = p.executeUpdate();

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to