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 回答