なぜ私はネイティブJavaブロブからOracle BLOBをキャストすることはできません
-
22-08-2019 - |
質問
私は、ResultSetからファイルを読んでいますし、Oracle Databaseにファイルを保存するために必須です。
...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();
私は、このエラーメッセージが表示されます取得
java.lang.ClassCastException
いずれも、これに対する解決策がありますか?ありがとう!
解決 3
私は解決策を発見しました。私はこの問題を持っている人たちと共有したいと思います。
OracleのBLOBからのOutputStreamを取得するコードは、次のとおりです。
java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);
にsetBinaryStream()は実際に戻っているにjava.io.OutputStreamオブジェクト
他のヒント
java.sql.Blob
インターフェイスです。おそらくあなたのResultSet
に返さ実装はoracle.sql.BLOB
する別の実装がありますか?
を返すmyfile.getClass()
んか?
あなたは(あなたがいた場合、それが動作するはずです、BLOBはブロブを実装して)そこのoracle.sql.BLOBを持っていないように見えます。 ClassCastExceptionがそれは何と言っていますか?
は、Oracleのバージョンは何、あなたはどのようなJDBCドライバのバージョンを使用していますか?
のgetBinaryOutputStream のとにかく廃止されて、あなたはおそらく、すべてのOracleの内部クラスに行く必要がなくなりJDBC(3.0)インターフェイスにのにsetBinaryStream を使用する必要があります。
所属していません StackOverflow