【发布时间】:2021-08-26 12:10:42
【问题描述】:
我已使用 JDBC PrepareStatement 进行查询
SELECT count(1) Count FROM STDL_REPORT_OUTPUT WHERE RORDER = ?
但是当我尝试发送 ?使用
prep.setString(1, "1");
它抛出:
列索引无效。 ORA-17003 SQLSTATE-99999 23:42:09,175 错误 [stderr](默认任务 2)java.sql.SQLException:无效的列索引 198543 [默认任务 2] 错误标准错误 - java.sql.SQLException:无效的列索引 23:42:09,176 错误 [stderr](默认任务 2)在 oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5741) 198544 [默认任务 2] 错误标准错误 - 在 oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5741) 23:42:09,176 错误 [stderr](默认任务 2)在 oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5729) 198544 [默认任务 2] 错误标准错误 - 在 oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5729) 23:42:09,177 oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:289)的错误 [stderr](默认任务 2) 198545 [默认任务 2] 错误标准错误 - 在 oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:289) 23:42:09,178 org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setString 的错误 [stderr](默认任务 2)(WrappedPreparedStatement.java:691) 198546 [默认任务 2] 错误标准错误 - 在 org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setString(WrappedPreparedStatement.java:691)
【问题讨论】:
-
是来自
setString()行的错误(似乎应该根据另一条评论得到setInt(),但这不会导致此错误);或者当您稍后使用getInt()检索计数值时是否会抛出它,并且该参数是错误的?您可以编辑您的问题以包含 fetch 周围的代码,并指出异常指的是哪一行。 -
请提供minimal reproducible example,包括异常堆栈跟踪。
-
我已附上错误消息请为此找到一些解决方案@Alex Poole
-
@mohit
RORDER列的数据类型是什么?请通过传递正确的值从后端执行查询。最好提供完整的代码 sn-p 来解决问题。 -
@Jacob RORDER 列的数据类型是数字,我从后端执行查询它工作正常。我也厌倦了使用 setInt