Ref.: Testando o tipo de objeto

3 respostas
P

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á.

3 Respostas

T

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

P

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.

T

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.

Criado 18 de outubro de 2007
Ultima resposta 18 de out. de 2007
Respostas 3
Participantes 2