なぜ私はネイティブJavaブロブからOracle BLOBをキャストすることはできません

StackOverflow https://stackoverflow.com/questions/379594

質問

私は、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 を使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top