Java 在Oracle数据库中以blob形式插入字节[]数组获取ORA-01460:未实现或请求的转换不合理

Java 在Oracle数据库中以blob形式插入字节[]数组获取ORA-01460:未实现或请求的转换不合理,java,oracle,java-stored-procedures,Java,Oracle,Java Stored Procedures,我有一个java存储过程,试图将byte[]数组插入表中的oracle blob字段中 我创建了一个准备好的语句,如下所示,但当我执行准备好的语句时,它将随机失败。我已经缩小了范围,这个问题来自pstmt.setBytes(4,content)。我得到的错误是: ORA-01460:请求的转换未实现或不合理 请尝试使用以下代码,这应该适用于您:- Blob blobValue = new SerialBlob(data); pstmt.setBlob(4, blobValue); 如果我没有记

我有一个java存储过程,试图将byte[]数组插入表中的oracle blob字段中

我创建了一个准备好的语句,如下所示,但当我执行准备好的语句时,它将随机失败。我已经缩小了范围,这个问题来自pstmt.setBytes(4,content)。我得到的错误是:

ORA-01460:请求的转换未实现或不合理


请尝试使用以下代码,这应该适用于您:-

Blob blobValue = new SerialBlob(data);
pstmt.setBlob(4, blobValue);

如果我没有记错的话,Oracle JDBC驱动程序(至少是较旧的驱动程序-您没有告诉我们您使用的是哪个版本)不支持
setBytes()
(或
getBytes()

根据我的经验,使用
setBinaryStream()
更可靠、更稳定:

InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);

当内容为null或空字符串时会发生吗?不会,如果我注释掉第四个参数,那么一切都很好。删除了我的答案,因为问题已经更正。。。
数据
是否非空?我的意思是:当
数据
为空或空字符串时会发生这种情况吗?如果数据为空,则不会发生这种情况,只有当byte[]数组中有内容时才会发生这种情况,这与使用
Blob
有什么不同?@Goodwine:因为根据我的经验
getBlob()
setBlob()
未实施或工作不正常。
InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);