Domanda

Sto leggendo file da ResultSet ed è necessario per salvare il file in Oracle Database.

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

ricevo questo messaggio di errore

java.lang.ClassCastException

Qualunque ha soluzione a questo? Grazie!

È stato utile?

Soluzione 3

Ho trovato la soluzione. Mi piacerebbe condividere con chi ha questo problema.

Il codice per ottenere OutputStream da Oracle blob è:

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

setBinaryStream () è in realtà restituendo l'oggetto java.io.OutputStream

Altri suggerimenti

java.sql.Blob href="http://java.sun.com/javase/6/docs/api/java/sql/Blob.html" rel="nofollow noreferrer"> è un'interfaccia . Presumibilmente l'attuazione visualizzate nel ResultSet è una diversa implementazione di oracle.sql.BLOB?

Che cosa significa myfile.getClass() tornare?

Non sembrano avere un oracle.sql.BLOB lì (se l'avete fatto, dovrebbe funzionare, BLOB implementa Blob). Che cosa dice la ClassCastException dire che è?

Quale versione di Oracle e che versione del driver JDBC stai usando?

getBinaryOutputStream è deprecato in ogni caso, si dovrebbe usare setBinaryStream nella (3.0) l'interfaccia JDBC, che probabilmente elimina la necessità di andare a lezione interna di Oracle a tutti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top