Tamanho dos dados maior que o tamanho máximo para este tipo - Oracle
7 respostas
P
pedrohnog
Pessoal,
ao tentar gravar um texto (aproximadamente 7500 caracteres) no meu banco de dados tenho o seguinte erro:
Tamanho dos dados maior que o tamanho máximo para este tipo
O driver que estou usando é compátivel com meu BD.
No caso o Banco é o Oracle 8.0.5 e o driver é o classes12.jar do Oracle 8.1.7 que é a versão mais antiga do driver que existe.
O campo no BD é do tipo Long e o no Java é String.
Já testei em um banco Oracle 9 com o driver para o Oracle 9 e não funcionou.
Com quanto caracteres está definido o campo na tabela? Se for menos de 7.500, você terá de truncar (cortar) o texto a ser gravado.
Tente usar o driver ojdb14.jar ou o ojdbc6.jar (p/ java 6).
Boa sorte.
F
furutani
pedrohnog:
O campo no BD é do tipo Long e o no Java é String.
Gravar string numa coluna long é meio complicado.
D
danieldestro
A contrário do que possa parecer, no ORACLE, o tipo LONG se refere a:
F
furutani
poxa… isso eu não sabia.
No Oracle 8 não tinha varchar2?
D
danieldestro
[color=red]A bigger version the VARCHAR2[/color]
P
pedrohnog
Daniel,
vou fazer uns testes aqui e falo se funcionou.
Pedro Nogueira.
P
pedrohnog
Daniel,
tive que cuidar de outros projetos e acabei demorando pra poder voltar a ver esse problema, mas vamos lá.
Tentei a dica que você deu sobre trocar o drive e não funcionou, mas consegui uma solução.
Fiz dessa maneira pra gravar:
publicstaticvoidgravar(Stringtexto,Stringcodigo)throwsSQLException{Connectionconn=null;ByteArrayInputStreambs=null;PreparedStatementps=null;try{bs=newByteArrayInputStream(texto.getBytes());conn=DriverManager.getConnection("jdbc:oracle:thin://localhost:1521:ORCL","user","pass");ps=conn.prepareStatement("UPDATE DOCTOTXT SET TEXTO = ? WHERE CODIGO = ?");ps.setAsciiStream(1,bs,texto.length());ps.setString(2,codigo);ps.executeUpdate();}catch(SQLExceptione){e.printStackTrace();}finally{conn.close();}}
Valeu pela ajuda e fica a dica pra quem estiver com o mesmo problema.