¿Por qué no puedo emitir BLOB de Oracle Blob Java Native
-
22-08-2019 - |
Pregunta
Estoy leyendo el archivo de conjunto de resultados y ha obligado a guardar el archivo en la base de datos de Oracle.
...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();
me sale este mensaje de error
java.lang.ClassCastException
Cualquiera tiene solución a esto? Gracias!
Solución 3
He encontrado la solución. Me gustaría compartir con los que cuenta este problema.
El código para obtener OutputStream de burbuja oráculo es:
java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);
setBinaryStream () que realmente está volviendo objeto java.io.OutputStream
Otros consejos
java.sql.Blob
es una interfaz . Es de suponer que la aplicación ha devuelto en el ResultSet
es una implementación diferente a oracle.sql.BLOB
?
Lo que myfile.getClass()
volver?
Parece que no tienen un oracle.sql.BLOB allí (si lo hiciera, que debería funcionar, BLOB implementa Blob). ¿Qué dice la ClassCastException es?
¿Qué versión de Oracle y qué versión del controlador JDBC está usando?
getBinaryOutputStream es obsoleto de todos modos, se debe utilizar setBinaryStream en la interfaz JDBC (3.0), lo que probablemente elimina la necesidad de ir a clase interna de Oracle en absoluto.