我正在从 ResultSet 读取文件,需要将文件保存到 Oracle 数据库中。
...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();
我收到此错误消息
java.lang.ClassCastException
任何人有解决这个问题?谢谢!
我正在从 ResultSet 读取文件,需要将文件保存到 Oracle 数据库中。
...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();
我收到此错误消息
java.lang.ClassCastException
任何人有解决这个问题?谢谢!
我找到了解决方案。我想和有这个问题的人分享。
从 oracle blob 获取输出流的代码是:
java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);
setBinaryStream() 实际上是返回 java.io.OutputStream 对象
java.sql.Blob
是一个接口。大概您返回的ResultSet
实现与oracle.sql.BLOB
?
返回什么myfile.getClass()
?
您那里似乎没有 oracle.sql.BLOB(如果有,它应该可以工作,BLOB 实现了 Blob)。ClassCastException 说的是什么?
您使用的是什么版本的 Oracle 和什么版本的 JDBC 驱动程序?
无论如何,不推荐使用getBinaryOutputStream ,您应该在 JDBC (3.0) 接口中使用setBinaryStream,这可能根本不需要转到 Oracle 的内部类。