为什么我不能从本机java Blob中转换oracle BLOB

时间:2008-12-18 22:46:02

标签: java oracle blob classcastexception

我正在从ResultSet中读取文件,并且需要将文件保存到Oracle数据库中。

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

我收到此错误消息

java.lang.ClassCastException

任何人都有解决方案吗?谢谢!

3 个答案:

答案 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对象