Trazer data formatada

12 respostas
rafa120

Pessoal, quero trazer a data formatada do banco para dd/MM/yyyy
Eu consigo cadastrar no formato Brasileiro de boa, mas pra trazer nao!

ai estou tentando fazer isso no resultset numa classe DAO e da este erro

java.lang.IllegalArgumentException: Cannot format given Object as a Date

public List<CadNotaFiscal> getLista(String numero_nf) throws SQLException
     {
        String sql = "select * from cad_nf where numero_nf like ?";
        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, numero_nf);
        ResultSet rs = stmt.executeQuery();

        List<CadNotaFiscal> minhaLista3 = new ArrayList<CadNotaFiscal>();

        SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");

        while (rs.next())
        {
            CadNotaFiscal cnf = new CadNotaFiscal();

            //cnf.setVencimento(rs.getDate("vencimento")); //Desse jeito traz o resultado OK, mas no formato yyyy-MM-dd         
            cnf.setVencimento((Date.valueOf(f.format("vencimento")))); //Aqui onde eu tento q da o erro

            minhaLista3.add(cnf);
        }

        rs.close();
        stmt.close();
        return minhaLista3;
    }

Agradeço a ajuda

12 Respostas

Alexandre_Saudate

Modifique a linha:

cnf.setVencimento((Date.valueOf(f.format("vencimento"))));

para

cnf.setVencimento((Date.valueOf(f.format(new java.util.Date(rs.getDate("vencimento").getTime())))));

que vai funcionar.

[]´s

rafa120

agora me trouxe este erro

java.lang.IllegalArgumentException

Alexandre_Saudate

rafa120:
agora me trouxe este erro

java.lang.IllegalArgumentException

Ops, minha falha. Editei a linha ali em cima.

[]´s

rafa120

hmm da o mesmo erro
pq será?

faz tempo que estou batalhando nisso, ta complicado

Alexandre_Saudate

rafa120:
hmm da o mesmo erro
pq será?

faz tempo que estou batalhando nisso, ta complicado

Por acaso, há chance do resultset estar retornando esta linha como null ? Em outras palavras, este campo está como not null no BD ?

[]´s

rafa120

Esta como null

Alexandre_Saudate

Já tem sua resposta… não pode passar null para o método format.

[]´s

rafa120

hmm…vou modificar algumas coisas aqui entao e testar e ja respondo

pq eu fiz um metodo que se a pessoa nao digitar nada, recebe null

rafa120

mesmo erro, rss

:frowning:

Retirei null do banco, e retirei null no metodo… mas nada ainda :frowning:

rafa120

Bom, estou tentando tratar isso nesta classe, que é uma classe DAO (só sql)
nao aponta nenhum erro

ai quando executo outra classe que é um formulario ele roda, mas ai qdo clico no pesquisar… ai gera este erro

sera que é realmente nesta classe q eu preciso tratar isso?

mgarcia

Fala…

na classe DAO, vc só deve dar o set normal da data, sem nenhuma formatação de data com SimpleDateFormat…
Na classe DAO preocupe-se apenas em colocar os valores corretos em cada atributo…
Agora na camada de apresentação vc formata a data com o SimpleDateFormat, método format e deve funcionar corretamente…

rafa120

Galera

Obrigado pela ajuda

realmente na classe DAO nao se pode fazer
tentei novamente no formulário, onde traz os dados para a tabela e consegui

Ai deu erro de objeto, mas como o asaudate disse, format nao serve para null… entao é só arruma isso
é muito fácil, porém eu só demorei pq nao estava sabendo o local correta pra colocar a formatacao

SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); txtEmissao.setText(String.valueOf(f.format(notasf.get(tabela.getSelectedRow()).getEmissao())));

Criado 16 de maio de 2010
Ultima resposta 17 de mai. de 2010
Respostas 12
Participantes 3