4

ResultSet からファイルを読み取っていますが、ファイルを Oracle データベースに保存する必要があります。

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

このエラーメッセージが表示されます

java.lang.ClassCastException

これに対する解決策はありますか?ありがとう!

4

3 に答える 3

4

私は解決策を見つけました。そんなお悩みをお持ちの方にシェアしたいと思います。

Oracle BLOB から出力ストリームを取得するコードは次のとおりです。

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

setBinaryStream() は実際には java.io.OutputStream オブジェクトを返しています

于 2009-07-23T00:13:00.917 に答える
3

java.sql.Blob インターフェースです。おそらく、あなたで返された実装は、?ResultSetとは異なる実装です。oracle.sql.BLOB

何をmyfile.getClass()返しますか?

于 2008-12-18T22:52:10.697 に答える
3

そこに oracle.sql.BLOB がないようです (もしあれば、BLOB は Blob を実装するはずです)。ClassCastException は何と言っていますか?

使用している Oracle のバージョンと JDBC ドライバーのバージョンは?

とにかく、 getBinaryOutputStreamは非推奨です。JDBC (3.0) インターフェイスでsetBinaryStreamを使用する必要があります。これにより、おそらく Oracle の内部クラスにアクセスする必要がまったくなくなります。

于 2008-12-18T22:53:19.087 に答える