4 Stimmen

Warum kann ich nicht Oracle BLOB von nativen Java Blob werfen

Ich lese eine Datei aus einem ResultSet und muss die Datei in der Oracle-Datenbank speichern.

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

Ich erhalte diese Fehlermeldung

java.lang.ClassCastException

Hat irgendjemand eine Lösung für dieses Problem? Danke!

4voto

netic Punkte 2694

Ich habe die Lösung gefunden. Ich möchte mit denen, die dieses Problem hat zu teilen.

Der Code zum Abrufen des Ausgabestroms aus dem Orakel-Blob lautet:

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

setBinaryStream() liefert eigentlich ein java.io.OutputStream-Objekt

3voto

Dan Vinton Punkte 25571

java.sql.Blob ist eine Schnittstelle . Vermutlich wird die Implementierung, die in Ihrem ResultSet ist eine andere Implementierung als oracle.sql.BLOB ?

Was bedeutet myfile.getClass() zurückkehren?

3voto

Thilo Punkte 248982

Sie scheinen dort kein oracle.sql.BLOB zu haben (wenn Sie es hätten, sollte es funktionieren, BLOB implementiert Blob). Was besagt die ClassCastException es ist?

Welche Version von Oracle und welche Version des JDBC-Treibers verwenden Sie?

getBinaryOutputStream ist ohnehin veraltet, Sie sollten die setBinaryStream in der JDBC (3.0)-Schnittstelle, so dass es wahrscheinlich nicht mehr notwendig ist, die interne Klasse von Oracle aufzurufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X