BLOB oráculo Por que não pode lançar a partir de Blob Java Native
-
22-08-2019 - |
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!
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.