【问题标题】:SQL - 17003 Invalid column index fo the QuerySQL - 17003 查询的列索引无效
【发布时间】: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

标签: java sql oracle jdbc


【解决方案1】:

setString 方法中使用的索引从 1 开始,而不是从 0 开始,如链接的 javadoc 中所述:

parameterIndex - 第一个参数是1,第二个是2,...

【讨论】:

  • 我已将索引值设置为 1,并且列的数据类型为 NUMBER,即使我累了 setInt 仍然没有用。 @Davide Lorenzo
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
相关资源
最近更新 更多