Erro ao inserir dados no banco

Pessoal

Estou tendo um problema na conversao dos dados na hora da gravação para o banco !!

O erro é esse !

ORA-01861: o literal não corresponde à string de formato

O meu codigo é o seguinte:

sqlInclude.append("INSERT INTO TB_CLIENTE ( ").append(
"ID_CLIENTE, CD_CLIENTE, CD_EMPRESA, CD_GRUPO_CLIENTE, NM_CLIENTE, NR_RG, CD_UNIVERSO, " +
"CD_TIPO_CADASTRAMENTO_CLIENTE, CD_FILIAL, CD_TIPO_CARTAO, NR_MATR_FUNCIONAL, FL_CADASTRO, " +
"FL_CARTAO, CD_BLOQUEIO, DT_CADASTRO, DG_CLIENTE, DT_NASCTO, NR_CNPJ_CPF, DS_SEXO, " +
"DS_IDENTIFICACAO) " ).append("VALUES ( ")
.append(to.idCliente).append(", ")
.append(to.codigoCliente).append(", ")
.append(to.codigoEmpresa).append(", ")
.append(to.codigoGrupoCliente).append(", '")
.append(to.nome).append(" ', ")
.append(to.rg).append(", ")
.append(to.codigoUniverso).append(", ")
.append(to.codigoTipoCadastramentoCliente).append(", ")
.append(to.codigoFilial).append(", ")
.append(to.codigoTipoCartao).append(", ")
.append(to.matricula).append(", ")
.append(to.flagCadastro).append(", '")
.append(to.flagCartao).append("', ")
.append(to.codigoBloqueio).append(", '")
.append(new java.sql.Date(to.nascimento.getTimeInMillis())).append("', ")
.append(to.digitoCliente).append(", '")
.append(sdf.format(dataCadastro)).append("', ")
.append(to.cpf).append(", '")
.append(to.sexo).append("', ")
.append("null )");

No banco ele insere perfeitamente !

Onde esta o meu erro ?

Valew

Abs

A maneira como vc fez é boa pra gerar um erro de sintaxe.

Elimine o uso desses ‘appends’, utilizando PreparedStatement.
Assim vc declara de uma vez o statement (insert into tabela values( ?, ?, ?, ?)), e depois vai dando setString(1, str), setInt(2, int) nas posicoes das interrogacoes.

Fica bem mais claro :wink:

a questao é que eu estou usando toplink !

nao uso PreparedStatement

Entendeu ?

Sim. Bom entao pode esta faltando algum aspas em volta da String, ou algo parecido.
Algum valor que vc esta fornecendo nao esta no formado esperado pelo banco.

estranho !

pq se eu executar a query, ela roda !!

So da o erro porque eu executo pelo topilink !

Você está tentando inserir uma literal num formato diferente do que foi especificado. Algo como inserir uma string num formato “DDMMYYY” em um campo no formato “MMDDYY”. É meio idiota o que escrevi agora, porque é o que o erro tá dizendo. Mas…

Você viu que data de nascimento e data de cadastro estão invertidos? Pelo menos é o que parece…

...DT_CADASTRO, DG_CLIENTE, DT_NASCTO,... ... .append(new java.sql.Date(to.nascimento.getTimeInMillis())).append("', ") .append(to.digitoCliente).append(", '") .append(sdf.format(dataCadastro)).append("', ") ...

Vê se é isso.