Ref.: Testando o tipo de objeto

Que a PAZ estaja convosco.

Alguém pode me dizer como faço para testar o tipo de objeto segundo o códiog abaixo?

Está dando erro quando tendo testar GregorianCalendar.

    private void ExecutaTransacao(final String sbSQL) {
        try {
            //Prepara transação
            PreparedStatement pstmt = Conexao.prepareStatement(sbSQL.toString());
            
            //Preeche os valores
            int i = 1;
            for (Iterator it = lhmAtributosClasse.keySet().iterator(); it.hasNext(); ) {
                String strNomeAtributo = new String(it.next().toString());
                
                if (!strNomeAtributo.equals("NomeTabela") && !strNomeAtributo.substring(strNomeAtributo.length()-3, strNomeAtributo.length()).equals("Chv")) {
                    System.out.println(lhmAtributosClasse.get(strNomeAtributo) + " # Tipo # " + lhmAtributosClasse.get(strNomeAtributo).getClass().getSimpleName());
                    
                    Object obj = lhmAtributosClasse.get(strNomeAtributo);
                    
                    //Trata o dado antes de gravar
                    //pstmt.setDate(i, this.TrataDadosAGravar(lhmAtributosClasse.get(strNomeAtributo)));

                    if(obj instanceof GregorianCalendar) {
                        pstmt.setDate(i, (GregorianCalendar) obj);  //===========> Aqui está o erro
                    } else if (obj instanceof String) {
                        pstmt.setString(i, (String) obj);
                    } else if (obj instanceof Integer) {
                        pstmt.setInt(i, (Integer) obj);
                    } else {
                        pstmt.setString(i, "Null");
                    }
                    
                    
                    i++;
                }
            }
            
            //Mostra String SQL
            System.out.println(sbSQL);
            
            //Executa  procedimento
            pstmt.executeUpdate();
            
            //Fecha procedimento
            pstmt.close();
            
            //Fecha conexão
            Conexao.close();
        } catch (SQLException errorSQL) {
            JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
            errorSQL.printStackTrace();
        }
    }

Obrigado desde já.

setDate requer um java.sql.Date, não um java.util.GregorianCalendar. Você precisa converter um no outro.

Blz!

Obrigado!, mas como faço isso?

O prepareStatement pode setar um GregorianCalendar?

Meu select precisa de um parâmetro tipo data.

Quebra essa!, por favor.

Um GregorianCalendar é um Calendar, e Calendar tem um método (getTime) que retorna um java.util.Date.
(Por favor, veja a documentação).
Para converter um java.util.Date em um java.sql.Date, há um método de java.util.Date (getTime) que retorna um long. Esse long pode ser usado por um construtor de java.sql.Date.