我正在从ResultSet中读取文件,并且需要将文件保存到Oracle数据库中。
...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();
我收到此错误消息
java.lang.ClassCastException
任何人都有解决方案吗?谢谢!
答案 0 :(得分:3)
java.sql.Blob
is an interface。据推测,ResultSet
中返回的实现与oracle.sql.BLOB
的实现不同?
myfile.getClass()
返回什么?
答案 1 :(得分:3)
你似乎没有oracle.sql.BLOB(如果你这样做,它应该工作,BLOB实现Blob)。 ClassCastException是什么意思呢?
您使用的是哪个版本的Oracle以及您使用的JDBC驱动程序版本?
无论如何,getBinaryOutputStream 都不推荐使用,你应该在JDBC(3.0)界面中使用 setBinaryStream ,这可能根本不需要去Oracle的内部类。
答案 2 :(得分:3)
我找到了解决方案。我想与那些有这个问题的人分享。
从oracle blob获取输出流的代码是:
java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);
setBinaryStream()实际上是返回java.io.OutputStream对象