Pergunta

Estou lendo arquivo de ResultSet e é exigido para salvar o arquivo no banco de dados Oracle.

...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();

eu conseguir obter esta mensagem de erro

java.lang.ClassCastException

Qualquer um tem solução para isso? Obrigado!

Foi útil?

Solução 3

Eu encontrei a solução. Eu gostaria de compartilhar com aqueles que tem esse problema.

O código para obter outputstream de blob oracle é:

java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);

setBinaryStream () está realmente voltando java.io.OutputStream objeto

Outras dicas

java.sql.Blob href="http://java.sun.com/javase/6/docs/api/java/sql/Blob.html" rel="nofollow noreferrer"> é uma interface . Presumivelmente, a implementação voltou em sua ResultSet é uma implementação diferente para oracle.sql.BLOB?

O que retorno myfile.getClass()?

Você parece não ter um oracle.sql.BLOB lá (se você fez, ele deve funcionar, implementos BLOB Blob). O que o ClassCastException dizem que é?

Qual versão do Oracle e qual a versão do driver JDBC que você está usando?

getBinaryOutputStream é obsoleto de qualquer maneira, você deve usar setBinaryStream na interface JDBC (3,0), o que provavelmente remove a necessidade de ir para a aula interna da Oracle em tudo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top