Problema com PreparedStatement (Conversão de tipos)

12 respostas
andrerios

Bom dia galera!!

Estou com um problema na seguinte linha do meu Insert em um PreparedStatement:

psInsert.setDate(3, (Date)(dpDadosProponente.getDataNascimentoProponente().getTime()));

onde: getDataNascimentoProponente() retorna um Calendar, e o Date q estou usando para casting é o java.sql.Date.

está ocorrendo ClassCastException.

Estou utilizando DB2.

Se alguem souber uma saída eu agradeço.

valeu!!

12 Respostas

ViniGodoy

O Calendar não é um filho de Date, portanto, não tem como fazer um cast.

Tente fazer:

psInsert.setDate(3, 
   new Date(dpDadosProponente.getDataNascimentoProponente().getTime()));
zetamayossi

tente com java.util.Date

ViniGodoy

A assinatura do setDate exige um java.sql.Date mesmo. O problema está em fazer o cast, quando na verdade ele deveria criar um novo objeto.

ramilani12

Pegue através do Timestamp :

//Buscar

Timestamp tm = rs.getTimeStamp("Data");

Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(tm.getTime);

// Gravar

pstmt.setTimeStamp(3 , new Timestamp(cal.getTimeInMillis()));
andrerios

ViniGodoy, tem como vc colocar o codigo q vc colocou na 1ª resposta denovo? pq nao está aparecendo aki, ta so a barra de rolagem.

abraco!!

valeu!!!

andrerios

Kra consegui copiar o codigo, mas nao funcionou nao… valeu assim mesmo

andrerios

ramilani12, o jeito q vc me passou eu nao testei, mas o kra q pediu pra eu fazer esse codigo pediu pra eu nao fazer assim…

valeu assim mesmo :stuck_out_tongue:

ViniGodoy

Por que não funcionou? A data ficou errada ou deu erro?

J
andrerios:
ViniGodoy, tem como vc colocar o codigo q vc colocou na 1ª resposta denovo? pq nao está aparecendo aki, ta so a barra de rolagem.

abraco!!

valeu!!!

Tá vendo? É o que eu já comentei em outros posts. Se a tag [code] for colocada numa linha só não dá pra ver nada, só a barra de rolageml horizontal. O único jeito de visualizar o que postaram é editar o código fonte.

ViniGodoy

Se a data ficou errada tente:

Calendar nasc = dpDadosProponente.getDataNascimentoProponente();

psInsert.setDate(3, new Date(
   nasc.get(Calendar.YEAR),
   nasc.get(Calendar.MONTH),
   nasc.get(Calendar.DAY_OF_MONTH)));
Eu confundi no método também era para ser:
psInsert.setDate(3, 
   new Date(dpDadosProponente.getDataNascimentoProponente().getTimeInMillis()));

Lembrando que o Date aqui também se refere ao java.sql.Date.

ramilani12

andrerios:
ramilani12, o jeito q vc me passou eu nao testei, mas o kra q pediu pra eu fazer esse codigo pediu pra eu nao fazer assim…

valeu assim mesmo :P

e há um motivo?

andrerios

ramilani12: tb nao entendi o pq nao, mas blz… coisas dele :stuck_out_tongue:

Criado 24 de janeiro de 2007
Ultima resposta 24 de jan. de 2007
Respostas 12
Participantes 5