Então, estou usando a versão do oracle9i, ojdb14_g.jar
E alterei o meu código para :
if (rs.next()) {
BLOB blob = ((OracleResultSet)rs).getBLOB("email");
os = blob.getBinaryOutputStream();
final File f = new File(arquivo.getName());
is = new FileInputStream(f);
final byte[] buffer = new byte[blob.getBufferSize()];
int bytesRead = 0;
while((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
blob = null;
}
Porém agora ele dá o seguinte erro:
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.DelegatingResultSet cannot be cast to oracle.jdbc.OracleResultSet
Tentei colocar a versão do ojdbc14_g do oracle10, porém ele não permite usar o comando getBinaryOutputStream().
Se alguém puder me ajudar, pois estou tentando apenas inserir um arquivo em um campo BLOB do oracle9i.
try {
// tenta ler o blob
bin = arq.getBinaryStream();
bytesRead = bin.read(bbuf);
// se chegou aqui ta tudo certo...
} catch( Exception e ) {
// o blob deve estar corrompido
psIns.setString(1,codigo);
psIns.executeUpdate();
log.warning("Blob corrompido: "+codigo);
}
} while( rs.next() );
Voce usa algum framework para persistencia ? Geralmente eles possuem os proprios tipos. Estou tendo mt sucesso ao usar Blod do proprio Hibernate por exemplo. Mas com oracle.sql nao tive problemas.
Então, infelizmente neste projeto que estou atualmente é jsp e servlets puro, não estão utilizando nenhum framework e para o banco de dados tb é direto…