Erro com inserção de data - componente JDataChooser

4 respostas
G

Bom dia!

Estou com um problema na inserção de data usando o componente JDataChooser. Estou utilizando o banco de dados firebird e no banco a minha variável é do tipo Date.
Quando tento realizar o cadastro aparece o seguinte erro: org.firebirdsql.jdbc.FBSQLException:GDS Exception. 335544334. conversion error from string "Tue Jul 31 11:01:36 BRT 2012.

Alguém sabe o que devo fazer?

Grata!

4 Respostas

drsmachado

Antes de inserir, converter para java.sql.Date, pois o JDateChooser retorna um objeto de java.util.Date (como pode ver, classes distintas).
Se está usando JDBC e preparedStatement, é bem simples.
Se não, preciso saber como está fazendo a persistência.

G

Estou usando o JDBC e também o preparedStatement.

em um dos exemplos na persistencia esta:

private Date dataCadastro;

na tela de cadastro esta data é pega assim:

fornecedor.setDataCadastro(mcdDataCadastro.getDate());

drsmachado

Sim, pois tanto o atributo dataCadastro do objeto fornecedor, quanto o retorno do método getDate do objeto mcdDataCadastro (que é um objeto da classe JDateChooser) são do tipo java.util.Date.

O tipo de data que os bancos de dados usam é diferente, ela é abstraída e representada no java pela classe java.sql.Date.

Tanto que, quando você invoca o método setDate de um objeto de PreparedStatement (java.sql.PreparedStatement), você precisa fazer algo assim

ps.setDate(indice, new java.sql.Date(fornecedor.getDate().getTime()));

Pois, um dos construtores sobrecarregados da classe java.sql.Date recebe como argumento um long, que é o retorno do método getTime() da classe java.util.Date.

Entendeu?

G

Entendi sim, funcionou agora.

:slight_smile:

Muito obrigada pela ajuda!

Criado 31 de julho de 2012
Ultima resposta 31 de jul. de 2012
Respostas 4
Participantes 2