【问题标题】:ClassCastException after executing Stored procedure in java在java中执行存储过程后的ClassCastException
【发布时间】:2013-09-20 13:39:53
【问题描述】:

在执行存储过程后,我得到 ClassCastException,用 Oracle 编写,使用 spring-jdbc。

这是给出问题的代码 sn-p,这里的数据是我从程序中得到的列表:

for(Object[] obj :data){

}

以下是错误:

java.lang.ClassCastException: oracle.jdbc.driver.OracleResultSetImpl cannot be cast to [Ljava.lang.Object

我认为问题在于从过程中获取 OUT 光标后如何在 Java 代码中使用它,即如何从中提取值?

很遗憾,谷歌搜索对我没有帮助。有人可以帮忙吗?

【问题讨论】:

  • 您正在尝试将结果集对象转换为对象数组。没有更多的代码,这就是所有可以说明的内容。
  • 包含给出错误的代码 sn-p 将有助于理解异常!
  • 我已经更新了这个问题。我认为问题在于从程序如何使用它?

标签: java oracle stored-procedures spring-jdbc


【解决方案1】:

data 不是数组的列表(或数组)。它是接口oracle.jdbc.driver.OracleResultSet 的实现。因此,您不能使用 for-each 循环对其进行迭代。

它还实现了ResultSet,它定义了方法next()。 因此,您可以使用 while-loop 迭代 data

while (data.next()){
    Object obj = data.getObject(col);
    // do somthing with obj
}

next() 方法将光标移动到下一行。 col 可以是列索引或标签。

Here你可以找到一个使用ResultSet的例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2023-03-30
    • 2016-02-08
    • 2019-07-15
    相关资源
    最近更新 更多