Pourquoi je ne peux pas jeter blob oracle de Blob java natif
-
22-08-2019 - |
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!
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.