Como mover NULO para o objeto em um PreparedStatment [RESOLVIDO]

Bom dia a todos.

Preciso atribuir NULO para o objeto.

Como faço isso?

pstmt2.setObject(i, Null);

Obrigado.

É isso.

Apresenta erro de Syntax.

Posta o trecho do código aí…
Ao meu entender, você poderia criar um objeto nulo (Object obj = null);

Primeiro Bloco

    protected void ExecutaTransacao(final String strSQL) {
        this.lhmAtributosClasse = getAtributosClasse();
        
        try {
            //Prepara transação
            PreparedStatement pstmt = conexao.prepareStatement(strSQL);

            //Atribui valores aos parâmetros
            int i = 0;
            
            //Inclusão
            if (strSQL.indexOf("INSERT INTO") > -1) {
                //Parâmetros de contexto da QUERY
                rsColunasTabela.beforeFirst();
                while (rsColunasTabela.next()) {
                    if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
                        pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsColunasTabela.getString("COLUMN_NAME")));
                    }
                }
                
                //Mostra String SQL
                System.out.println(pstmt);
            
                //Executa  procedimento
                pstmt.executeUpdate();
            } else if (strSQL.indexOf("UPDATE") > -1) {
                //Parâmetros de contexto da QUERY
                rsColunasTabela.beforeFirst();
                while (rsColunasTabela.next()) {
                    if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
                        pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsColunasTabela.getString("COLUMN_NAME")));
                    }
                }
                
                //Parâmetros da cláusula WHERE
                rsChavesTabela.beforeFirst();
                while (rsChavesTabela.next()) {
                    pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
                }
                
                //Mostra String SQL
                System.out.println(pstmt);
            
                //Executa  procedimento
                pstmt.executeUpdate();
            } else if (strSQL.indexOf("DELETE FROM") > -1) {
                //Parâmetros da cláusula WHERE
                rsChavesTabela.beforeFirst();
                while (rsChavesTabela.next()) {
                    pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
                }
                
                //Mostra String SQL
                System.out.println(pstmt);
            
                //Executa  procedimento
                pstmt.executeUpdate();
            } else if (strSQL.indexOf("SELECT FROM") > -1) {
                //Parâmetros da cláusula WHERE
                rsChavesTabela.beforeFirst();
                while (rsChavesTabela.next()) {
                    pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
                }
                
                //Mostra String SQL
                System.out.println(pstmt);
            
                //Executa  procedimento
                pstmt.executeQuery();
            }
            
            ////Mostra parâmetros e seus respectivos valores - (Esta PORRA!, não Funciona com alguns Drivers. Inclusive este!)
            //System.out.println("Parâmetros ...");
            //
            //ParameterMetaData pmd = pstmt.getParameterMetaData();
            //
            //for (int i2 = 1; i2 < pmd.getParameterCount(); i2++) {
            //    System.out.println("Parameter number " + i2);
            //    System.out.println("  Class name is " + pmd.getParameterClassName(i2));
            //    // Note: Mode relates to input, output or inout
            //    System.out.println("  Mode is " + pmd.getParameterClassName(i2));
            //    System.out.println("  Type is " + pmd.getParameterType(i2));
            //    System.out.println("  Type name is " + pmd.getParameterTypeName(i2));
            //    System.out.println("  Precision is " + pmd.getPrecision(i2));
            //    System.out.println("  Scale is " + pmd.getScale(i2));
            //    System.out.println("  Nullable? is " + pmd.isNullable(i2));
            //    System.out.println("  Signed? is " + pmd.isSigned(i2));
            //}
            
            //Fecha procedimento
            pstmt.close();
        } catch (SQLException errorSQL) {
            JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
            errorSQL.printStackTrace();
        }
    }

Segundo Bloco

    protected String PreparaInclusaoRegistro() throws SQLException {
        StringBuffer sbSQL;

        //Inclui Registro
        sbSQL = new StringBuffer();
                
        sbSQL.append("INSERT INTO ").append("tb_").append(this.nomeTabela).append(" ");
        sbSQL.append("(");
        
        //Lista as entradas (Campos da Tabela)
        rsColunasTabela.beforeFirst();
        while (rsColunasTabela.next()) {
            if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
                sbSQL.append(rsColunasTabela.getString("COLUMN_NAME")).append((", "));
            }
        }   
        
        //Retira o excesso
        sbSQL.delete(sbSQL.length() - 2, sbSQL.length());
        
        sbSQL.append(") VALUES (");
        
        //Lista as entradas (Parâmetros)
        rsColunasTabela.beforeFirst();
        while (rsColunasTabela.next()) {
            if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
                sbSQL.append("?, ");
            }
        }   
        
        //Retira o excesso
        sbSQL.delete(sbSQL.length() - 2, sbSQL.length());
        
        sbSQL.append(")");
        
        return sbSQL.toString();
    }

Terceiro Bloco (BLOCO DO ERRO

    protected static PreparedStatement TrataParametro(final PreparedStatement pstmt, final int i, final Object Objeto) throws SQLException {
        PreparedStatement pstmt2 = pstmt;
        
        //Trata o parâmetro
        if(Objeto instanceof GregorianCalendar) {
            pstmt2.setDate(i, new java.sql.Date(((GregorianCalendar) Objeto).getTime().getTime()));
        } else if (Objeto instanceof String) {
            pstmt2.setString(i, (String) Objeto);
        } else if (Objeto instanceof Integer) {
            pstmt2.setInt(i, ((Integer) Objeto).intValue());
        } else if (Objeto instanceof Float) {
            pstmt2.setDouble(i, (Float) Objeto);
        } else if (Objeto instanceof Short) {
            pstmt2.setDouble(i, (Short) Objeto);
        } else if (Objeto instanceof Double) {
            pstmt2.setDouble(i, (Double) Objeto);
        } else {
            System.out.println("Tipo inexistente -> " + "");
            pstmt2.setObject(i, Null);
        }
        
        return pstmt2;
    }

O Resultado apresenta é esse:

INSERT INTO tb_ParceirosComerciais2 (NomeRazaoSocial, CodigoTipoParceiro, NomeFantasia, DataCadastramento, DataNascimento, CPF_CNPJ, NumeroIdentidade, CodigoOrgaoExpedidor, DataEmissaoIdentidade, EstadoEmissorIdentidade, CodigoTipoPessoa) VALUES (‘Fulano de Tal’, 1.0, ‘Fulano’, ‘2011-05-10’, ‘1967-04-14’, ‘Null’, ‘Null’, ‘Null’, ‘Null’, ‘Null’, ‘Null’);

Quando deveria ser (Null sem ASPAS Simples):

Obrigado!

tenta

 xxxx.setNull(1, null)

PS: não sei se são 2 parametros ou apenas 1 que são enviados

Exatamente, setNull(int pos, null);
Um dos métodos do PreparedStatement

drsmachado
valeu por confirmar…
como não uso PS não me lembrava se era isso mesmo

pstmt2.setObject(i, null);

conseguiu resolver seu problema prsantos

caso sim altere seu topico para RESOLVIDO

Perdão!

Tive a intenção. Como faço isso?

vai no primeiro post deste topico e clique em editar, ai coloque [Resolvido]

o que eu passei solucionou seu problema?

RESOLVIDO

    protected static PreparedStatement TrataParametro(final PreparedStatement pstmt, final int i, final Object Objeto) throws SQLException {
        PreparedStatement pstmt2 = pstmt;
        
        //Trata o parâmetro
        if(Objeto instanceof GregorianCalendar) {
            pstmt2.setDate(i, new java.sql.Date(((GregorianCalendar) Objeto).getTime().getTime()));
        } else if (Objeto instanceof String) {
            pstmt2.setString(i, (String) Objeto);
        } else if (Objeto instanceof Integer) {
            pstmt2.setInt(i, ((Integer) Objeto).intValue());
        } else if (Objeto instanceof Float) {
            pstmt2.setDouble(i, (Float) Objeto);
        } else if (Objeto instanceof Short) {
            pstmt2.setDouble(i, (Short) Objeto);
        } else if (Objeto instanceof Double) {
            pstmt2.setDouble(i, (Double) Objeto);
        } else {
            System.out.println("Tipo inexistente -> " + "");
            pstmt2.setObject(i, null);
        }
        
        return pstmt2;
    }