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通常、このエラーは、シングルで2番目を開こうとした後、最初の(現在は閉じている)Statementを呼び出すことによって呼び出されます。nextResultSet

これを試して、機能するかどうかを確認できますか?

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

以下は機能します: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'
}
于 2012-10-31T07:54:51.933 に答える