[Dúvida] Conversão de valores em um Statement [RESOLVIDO]

6 respostas
Nicolas_Fernandes

Olá, galerinha do fórum!

Beleza??

Seguinte, estou com uma dúvida meio boba aqui…

Tenho meu pojo, o qual possui o seguinte método:

public Date getData() { return this.data; }

Beleza… Faço uso de um JCalendar em minha aplicação e, para pegar a data escolhida, faço da seguinte maneira:

Transacao transacao;
transacao.setData(meuCalendario.getDate());

No meu DAO, eu vou setar meu Statement com essa data do objeto:

meuStatement.setData(1, transacao.getData());

A princípio, era pra estar correto!
Quando rodo o programa, dá o seguinte erro, justamente na linha acima citada:

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

Tentei também das seguintes maneiras:

meuStatement.setData(1, (java.sql.Date) transacao.getData());
meuStatement.setData(1, (java.util.Date) transacao.getData());

E nada! :S

Alguém pode me dar uma help?

Agradecido desde já!!!
[]s

6 Respostas

davidbuzatto

java.util.Date != java.sql.Date

Sendo assim, vc precisa 'converter" o seu java.util.Date para um java.sql.Date.
Uma forma seria.

java.util.Date data = new java.util.Date(); java.sql.Date dataSql = new java.sql.Date( data.getTime() );

[]´s

V

Ja tentou assim ?

java.util.Date data1 = new java.util.Date();
        java.sql.Date data2 = new java.sql.Date(data1.getTime());
nel

Bom dia.

Você deve passar obrigatoria um java.sql.Date e não um java.util.Date, portanto:

Date dateUtil = new Date(); java.sql.Date date = new java.sql.Date(dateUtil.getTime());

Outro detalhe, o Statement você faz:

Abraços.

Nicolas_Fernandes

Opa, funcionou galera!!!

Obrigado pela ajuda =]

marcoslogan

Estou tendo o mesmo problema.

Só que quando eu vou incluir no banco, ele lá colocou não a data que eu digitei no form, mas a data padrão

1970-01-01, mas eu não quero essa data, eu quero a data que eu digitei lá no form, e quero o formato brasileiro.

DD/MM/AAAA

Eu fiz assim, na minha classe de repositório.

MyStatement.setDate(1, new Date(funcionario.getDataNascimento().getTime()));//essa linha ele executa.

mas o resultado é que eu não gostei nada, nada!!!

Será que alguém poderia me dizer como posso resolver isso?

Nicolas_Fernandes

Marcos,

Penso que você deva gravar do modo que ele pede no banco.

Quando você for usar a data, faça uso de um SimpleDateFormat!

[]s

Criado 15 de janeiro de 2010
Ultima resposta 15 de jan. de 2010
Respostas 6
Participantes 5