Como inserir uma String imensa em campo clob em banco oracle
9 respostas
D
dbarreto
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
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
foia
pôe a string num envelope e passa por baixo da porta !! :mrgreen: :mrgreen: :mrgreen:
vc usa setString() ou setBlob() no Statement ?!
D
dbarreto
Segue um trecho do que estou fazendo
try{PreparedStatementmyStatement=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(SQLExceptionexc)
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).
D
dbarreto
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
T
thingol
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.
D
dbarreto
E o que será que vou ter que fazer, procurar outro driver?
T
thingol
Não, o que lhe recomendo é ler o tal artigo. Tem uma receitinha de bolo lá, não se desespere :mrgreen: