Erro PreparedStatement ao gravar campo long Oracle

Pessoal,

Estou realizando um INSERT em uma tabela que possui dois campos um INTEIRO ou LONG.

Tudo ocorre normalmente desde que a string coloco no Long seja pequena, pois ao incluir um de 11000 caracteres dá o seguinte erro:

ORA-01704: string literal too long

query1 = "insert into admprod.tbod_script (NR, SCRIPT) VALUES (?, '"+strLinhas+"' )";
		
ps = conn.prepareStatement(query1);
ps.setInt(1, dadosAssociado.getNumeroFicha());

Temos um aplicação VB6.0 que realiza o insert normalmente será que é algum problema no JAVA?

Que raio de PreparedStatement é esse que você monta uma string desse jeito? Não é possivel usar “(?,?)” e passar os dois parâmetros?

para comprovar o erro do Statement, de um system.out.println de query1 e tente executar o comando via sql plus por exemplo …

Abraço

Com relação a pergunta :

Post 05/09/2007 13:54:22 Assunto: Re:Erro PreparedStatement ao gravar campo long Oracle

query1 = “insert into admprod.tbod_script (NR, SCRIPT) VALUES (?, '”+strLinhas+"’ )";
Que raio de PreparedStatement é esse que você monta uma string desse jeito? Não é possivel usar “(?,?)” e passar os dois parâmetros?

A questão é que ao utilizar o paramentro com (?) apresenta o seguinte erro:

java.sql.SQLException: Tamanho dos dados maior que o tamanho máximo para este tipo: 11341

[quote=leandroadinolfi]Com relação a pergunta :

Post 05/09/2007 13:54:22 Assunto: Re:Erro PreparedStatement ao gravar campo long Oracle

query1 = “insert into admprod.tbod_script (NR, SCRIPT) VALUES (?, '”+strLinhas+"’ )";
Que raio de PreparedStatement é esse que você monta uma string desse jeito? Não é possivel usar “(?,?)” e passar os dois parâmetros?

A questão é que ao utilizar o paramentro com (?) apresenta o seguinte erro:

java.sql.SQLException: Tamanho dos dados maior que o tamanho máximo para este tipo: 11341
[/quote]

Essa citação deve resolver o seu problema com o “raio” do PreparedStatement do Java:

Agora, como sugestão, já que você está usando Oracle, e precisa inserir Strings imensas nas suas tabelas, não seria melhor fazê-lo usando colunas do tipo CLOB?

Inté.

A citação não resolve o problema, já a questão do campo CLOB sei que funciona, mas tem muitos dados nesta tabela e outras aplicações utilizam a mesma, ou seja, não é viavel alterar o tipo do campo.

Nesse caso acho que você deveria mobilizar todos os responsáveis por essas outras aplicações que usam tal tabela de forma a convencê-los de que é necessário alterar esse campo.

Se ainda assim você preferir “aumentar a capacidade” dessa coluna sem alterar o seu tipo. você pode tentar usar algoritmos de compressão para armazenar esses valores String nessa sua tabela. E mesmo desse modo, você ainda assim poderá ter que se “harmonizar” com os responsáveis por essas outras aplicações.

Inté.