[RESOLVIDO]Campo date - PreparedStament + Oracle DB

4 respostas
marcoacsilva

Pessoal,

Estou fazendo um programa que lê um arquivo txt, pega alguns valores e alimenta uma base de dados oracle.

Estou com problema na questão dos tipos de dados do Oracle e dos oferecidos pelo PreparedStatement.

O principal é o seguinte. Tenho um campo no Oracle do tipo DATE.

Se eu tento fazer isso:

pst.setString(1, buscaValor(str, 2));

Eu recebo o erro:

java.sql.SQLDataException: ORA-01843: not a valid month

Apenas lembrando que, o método buscaValor faz a leitura de uma String e retorna uma string com o valor da 3ª coluna (está separado por tabulação na string).

Já tentei fazendo assim:

pst.setString(1, "'" + buscaValor(str, 2) + "'");

Mas recebo o erro:

java.sql.SQLDataException: ORA-01858: a non-numeric character was found where a numeric was expected

O que retorna do método é uma String com valores como este: 07/08/12

Alguem pode me ajudar?

4 Respostas

pmlm

Se o campo é DATE porque fazes setString?

String umaData = "07/08/12";

DateFormat df = new SimpleDateFormat("dd/MM/yy");
java.util.Date dataConvertida = df.parse(umaData);
java.sql.Date sqlDate = new java.sql.Date(dataConvertida getTime());

pst.setDate(1, sqlDate);
getAdicted

Eu não lembro de cabeça ( talvez apareceça alguém ).

O google dah assim: insert data jdbc oracle

Eh um problema comum.

[]'s

marcoacsilva

pmlm, Obrigado pela ajuda.

Resolvi de outra maneira. Coloquei a instrução to_date(?,‘dd/mm/yyyy’) diretamente no sql do preparedstatement para cada campo date e funcionou.

Obrigado.

getAdicted

Desculpem, eu não vi o setString :oops:

Criado 9 de março de 2013
Ultima resposta 9 de mar. de 2013
Respostas 4
Participantes 3