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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top