Jdbc 为什么在groovy中调用resultset的next时抛出错误

Jdbc 为什么在groovy中调用resultset的next时抛出错误,jdbc,groovy,Jdbc,Groovy,我在groovy中有以下代码,我需要控制循环行,这样我就可以在chuck中分割行,并将它们传递给其他线程(通过actor)。但是看起来无法调用next(),我没有执行以下测试 def ORACLE = Sql.newInstance( "jdbc:oracle:thin:@.....", "xxx", "xxx", "oracle.jdbc.driver.OracleDriver" ) java.sql.ResultSet rs = ORACLE.executeQuery("select 1 a

我在groovy中有以下代码,我需要控制循环行,这样我就可以在chuck中分割行,并将它们传递给其他线程(通过actor)。但是看起来无法调用next(),我没有执行以下测试

def ORACLE = Sql.newInstance( "jdbc:oracle:thin:@.....", "xxx", "xxx", "oracle.jdbc.driver.OracleDriver" )
java.sql.ResultSet rs = ORACLE.executeQuery("select 1 as x from dual")  
rs.next()
错误:

Oct 30, 2012 6:15:44 AM org.codehaus.groovy.runtime.StackTraceUtils sanitize
WARNING: Sanitizing stacktrace:
java.sql.SQLException: Closed Statement: next
  oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:242)

你确定这就是你的全部代码吗?我看不出这是怎么失败的

通常,调用此错误的方法是尝试在单个
语句上打开第二个
ResultSet
,然后在第一个(现已关闭)ResultSet上调用
next

你能试试这个,看看它是否有效:

ORACLE.eachRow( "select 1 as x from dual" ) { row ->
  println row.x
}

以下方法有效:只需使用JavaStypeJDBC

import oracle.jdbc.driver.OracleTypes

driver = oracle.jdbc.driver.OracleDriver

Connection conn = DriverManager.getConnection(".....", "**", "**")  
Statement stmt = conn.createStatement();  
java.sql.ResultSet rs = stmt.executeQuery("select * from dual")  
while (rs.next()){
   println 'xx'
}

唯一遗漏的是导入包的代码。如果使用您的方法,则没有错误。但是我需要使用next()来控制工作流。我尝试使用mysql,但它也抛出了相同的错误。