2

如何为此操作创建超时:?

def db = Sql.newInstance("jdbc:mysql://${mysql_host}:3306/${dbName}", 
    user, pass, 'com.mysql.jdbc.Driver')
db.eachRow(query) { row ->
  // do something with the row
}
4

2 回答 2

9

我相信正确的方法是这样的:

sql = Sql.newInstance("jdbc:oracle:thin:@localhost:1521:XE", "user", 
                  "pwd", "oracle.jdbc.driver.OracleDriver") 

sql.withStatement { 
   stmt -> stmt.queryTimeout = 10 
} 

sql.eachRow("select * from someTable", { 
 println it 
} ) 

当然,这是我使用 Oracle 的地方,但我希望这可以给你一个想法。

于 2013-09-08T16:33:08.243 回答
0

我相信可能没有一个通用的答案,而是通过参数到连接 URL 的特定于数据库/驱动程序的答案。

例如对于 mysql,我认为添加connectTimeout=something&socketTimeout=something可能会成功。

于 2013-09-08T16:24:01.663 回答