我在groovy中有以下代码,我需要控制循环行,以便我可以将chucks中的行拆分为传递给其他线程(由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)
答案 0 :(得分:1)
你确定这是你的所有代码吗?我看不出那是怎么失败的。
通常,尝试在单个ResultSet
上打开第二个Statement
,然后在第一个(现已关闭)next
<上调用ResultSet
来调用此错误/ p>
你可以尝试一下,看看它是否有效:
ORACLE.eachRow( "select 1 as x from dual" ) { row ->
println row.x
}
答案 1 :(得分: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'
}