Liaison d'une variable null dans un PreparedStatement

Je jure que ce travail, mais il n'est pas dans ce cas. Je suis en train de match col1, col2 et col3, même si l'un ou plusieurs d'entre eux est nulle. Je sais que dans certaines langues, j'ai dû recourir à des périphrases comme ((? is null AND col1 is null) OR col1 = ?). C'est qu'ici?

        PreparedStatement selStmt = getConn().prepareStatement(
                "SELECT     * " +
                "FROM       tbl1 " +
                "WHERE      col1 = ? AND col2 = ? and col3 = ?");
        try
        {
            int col = 1;
            setInt(selStmt, col++, col1);
            setInt(selStmt, col++, col2);
            setInt(selStmt, col++, col3);
            ResultSet rs = selStmt.executeQuery();
            try
            {
                while (rs.next())
                {
                   //process row
                }
            }
            finally
            {
                rs.close();
            }
        }
        finally
        {
            selStmt.close();
        }

   //Does the equivalient of stmt.setInt(col, i) but preserves nullness.
    protected  static void setInt(PreparedStatement stmt, int col, Integer i)
    throws SQLException
    {
        if (i == null)
            stmt.setNull(col, java.sql.Types.INTEGER);
        else
            stmt.setInt(col, i);
    }

source d'informationauteur Paul Tomblin