Como inserir uma String imensa em campo clob em banco oracle  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
dbarreto
Thread.start()

Membro desde: 18/09/2002 11:28:53
Mensagens: 36
Localização: Butantã-SP
Offline

Por favor me ajudem

Como inserir uma String imensa em campo clob em banco oracle, se eu passo como string com pouco dados ele até insere, mas quando a String é muito grande ele me retorna

Data size bigger

java.sql.SQLException: Data size bigger than max size for this type

Valeu obrigado, qualquer dica é válida.

Daniel
[Email] [ICQ]
AndreNunes
Smalltalk
[Avatar]

Membro desde: 27/12/2004 17:31:35
Mensagens: 1
Offline

tente criar um BLOB e aconselhavel criar um BLOB.

"Senhor Jesus tenha misericordia de minha vida." pois preciso muito de você.
[MSN]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

dbarreto wrote:Por favor me ajudem

Como inserir uma String imensa em campo clob em banco oracle, se eu passo como string com pouco dados ele até insere, mas quando a String é muito grande ele me retorna

Data size bigger

java.sql.SQLException: Data size bigger than max size for this type

Valeu obrigado, qualquer dica é válida.


Um Clob eh, por definicao, uma "string imensa" ja. Provavelmente voce esta fazendo algum bind errado, ou algum outro tipo de bug no seu codigo. Como voce esta manipulando esta parte?

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
foia
JavaGuru
[Avatar]

Membro desde: 26/09/2003 16:29:51
Mensagens: 212
Localização: tiquipaya city
Offline

pôe a string num envelope e passa por baixo da porta !!

vc usa setString() ou setBlob() no Statement ?!

fôia
-----------------------
Ahhhhh meu saquinho !!!
[WWW]
dbarreto
Thread.start()

Membro desde: 18/09/2002 11:28:53
Mensagens: 36
Localização: Butantã-SP
Offline

Segue um trecho do que estou fazendo

try
{
PreparedStatement myStatement = myConnection.prepareStatement("INSERT INTO TABELA(ID,NOME,SOBRENOME,TEXTOCLOB)" +
" VALUES(SEQ_ID.NEXTVAL, ?, ?, ?)");

myStatement.setString(1, nome);
myStatement.setString(2, sobrenome);
myStatement.setString(3, TextoClob);


myStatement.executeUpdate();
myStatement.close();

}
catch (SQLException exc)

Daniel
[Email] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/files/advanced/LOBSample/Readme.html

Dica: Ponha um bookmark no seu browser para a Oracle Technology Network ( http://www.oracle.com/technology/index.html ). Você vai precisar muito disso.

Resumindo: você tem de inserir o registro com CLOBs vazios. Então você tem de selecionar o registro recém inserido, obter o CLOB, do CLOB obter uma OutputStream, e gravar os dados (argh).

This message was edited 1 time. Last update was at 21/06/2005 14:55:04

[WWW]
dbarreto
Thread.start()

Membro desde: 18/09/2002 11:28:53
Mensagens: 36
Localização: Butantã-SP
Offline

Mas o que tenho que no campo é uma string e não OutputStream, e mais se eu passo uma string curta ele insere é só quando ultrapassa algum número de caracter.
A String e a limitação não é do String porque eu estou exibindo ela e está completa. o erro que dá é


Data size bigger

java.sql.SQLException: Data size bigger than max size for this type

Daniel
[Email] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Eu sei, já tive esse problema também (Oracle, sempre a Oracle... ), por isso é que lhe passei esse link. Acima de um determinado tamanho, usar setString não funciona, e setClob também não funciona direito com algumas versões do driver da Oracle (não sei se com o thin driver ou com o OCI).
O problema que tive foi um pouco pior, porque eu tive de usar uma conexão de um DataSource (não tinha uma conexão direta ao banco). Eu tive de fazer umas gambiarras do tipo "if (servidor é JBoss) { faz um cast do DataSource para uma classe do JBoss, que expõe a conexão nativa; usar a conexão nativa; etc. }." Muito chato.

[WWW]
dbarreto
Thread.start()

Membro desde: 18/09/2002 11:28:53
Mensagens: 36
Localização: Butantã-SP
Offline

E o que será que vou ter que fazer, procurar outro driver?


Daniel
[Email] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Não, o que lhe recomendo é ler o tal artigo. Tem uma receitinha de bolo lá, não se desespere
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team