Java中将Oracle数据库的BLOB转换为InputStream?

4
我编写了一个以InputStream为输入的Java函数。我有一个oracle.sql.BLOB实例要传递给该函数。我该如何将其转换为InputStream
我需要重新使用BLOB参数重写我的函数吗?
2个回答

7
您没有说明从数据库中获取数据的方式,但是您可以使用ResultSet.getBinaryStream()方法获取InputStream,或者调用getBlob()方法来获取Blob,然后在Blob上调用getBinaryStream()来获得一个流。

我们使用PL/SQL获取它,所以这里没有特别之处,在其中有一个PL/SQL函数调用Java函数并返回结果。 - Data-Base
@Data-Base:我是指你使用的客户端技术 - 例如Hibernate ORM,直接JDBC,哪个驱动程序等。 - Jon Skeet
不确定你的意思,但是没有!我们只是从 PL/SQL 查询数据库并将变量发送到函数,该函数接收变量,转换数据并返回文本。Java 在 Oracle 数据库中作为类编译。 - Data-Base
2
@数据库:啊 - 那就是另一回事了。在数据库中运行 Java 代码相对较少见... 要是你一开始就这么说,我也不知道怎么做了。基本上在你所使用的任何 API 中查找与 Blob 相关的调用即可... - Jon Skeet

6

按照“映射数据类型”文档,声明Java参数为oracle.sql.BLOB类型。然后,调用该BLOB对象的getBinaryStream()方法以获取InputStream


然后呢?我该如何将它转换为InputStream? - Data-Base

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接