Question

Je suis en train de lire le fichier de ResultSet et il est requis pour enregistrer le fichier dans la base de données Oracle.

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

Je reçois ce message d'erreur

java.lang.ClassCastException

Quelqu'un a une solution à cela? Merci!

Était-ce utile?

La solution 3

Je l'ai trouvé la solution. Je voudrais partager avec ceux qui a ce problème.

Le code pour obtenir outputstream de blob oracle est:

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

setBinaryStream () est en fait le retour objet java.io.OutputStream

Autres conseils

java.sql.Blob href="http://java.sun.com/javase/6/docs/api/java/sql/Blob.html" rel="nofollow noreferrer"> est un d'interface. On peut supposer que la mise en œuvre de retour dans votre ResultSet est une implémentation différente oracle.sql.BLOB?

Qu'est-ce que myfile.getClass() retour?

Vous semblez ne pas avoir un oracle.sql.BLOB là (si vous l'avez fait, cela devrait fonctionner, blob implémente Blob). Qu'est-ce que le ClassCastException dit qu'il est?

Quelle version d'Oracle et quelle version du pilote JDBC utilisez-vous?

getBinaryOutputStream est dépréciée de toute façon, vous devez utiliser setBinaryStream dans l'interface JDBC (3.0), ce qui élimine probablement la nécessité d'aller à la classe interne d'Oracle du tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top