0

我在 groovy 中有以下代码,并且我需要控制循环行,以便我可以将卡盘中的行拆分并传递给其他线程(通过参与者)。但看起来 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)
4

2 回答 2

1

你确定这就是你的全部代码吗?我看不出这是如何失败的。

通常,通过尝试ResultSet在单个 上打开第二个Statement,然后调用next第一个(现已关闭)来调用此错误ResultSet

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

ORACLE.eachRow( "select 1 as x from dual" ) { row ->
  println row.x
}
于 2012-10-30T10:27:33.010 回答
0

以下将起作用:只需使用 java stype jdbc。

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'
}
于 2012-10-31T07:54:51.933 回答