java.sql.SQLException:调用中的参数无效:getBytes()
Posted
技术标签:
【中文标题】java.sql.SQLException:调用中的参数无效:getBytes()【英文标题】:java.sql.SQLException: Invalid argument(s) in call: getBytes() 【发布时间】:2020-06-21 03:02:34 【问题描述】:我正在尝试使用以下代码将 blob 转换为字符串:
ResultSet rs = stmt.executeQuery(query);
Blob newValueBLOB = rs.getBlob("NEW_VALUE");
System.out.println(newValueBLOB);
String newValue = new String(newValueBLOB.getBytes(0, (int) newValueBLOB.length()));
我的数据库是 Oracle 并且连接建立正确。我找到了类似的答案,但我的不工作!
【问题讨论】:
请阅读minimal reproducible example并相应地完善您的问题。 【参考方案1】:来自Blob#getBytes 的 Javadoc:
byte[] getBytes(long pos, int length) 抛出 SQLException pos - 要提取的 BLOB 值中第一个字节的序号位置;第一个字节在位置 1
因此,您对getBytes()
的调用应该传入 1 作为开始位置,而不是零:
String newValue = new String(newValueBLOB.getBytes(1, (int) newValueBLOB.length()));
作为替代方案,可能更简单,您可以直接使用ResultSet#getBytes
:
ResultSet rs = stmt.executeQuery(query);
byte[] newValue = rs.getBytes("NEW_VALUE");
String newValueStr = new String(newValue);
【讨论】:
以上是关于java.sql.SQLException:调用中的参数无效:getBytes()的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLException: 调用中无效的参数DSRA0010E: SQL 状态 = null,错误代码 = 17,433
java.sql.SQLException:Io 异常:在与 oracle 的 JDBC 连接期间从读取调用中得到减一
JDBC - 从 JAVA 调用 PLSQL 给出 Java.sql.SQLException: ORA-06550
启动tomcat时报错了, nested exception is java.sql.SQLException: 调用中无效的参数