如何超时 java.sql.ResultSet
Posted
技术标签:
【中文标题】如何超时 java.sql.ResultSet【英文标题】:How to Timing out java.sql.ResultSet 【发布时间】:2009-06-23 19:29:51 【问题描述】:PL/SQl 光标由于某种原因被挂起,这使我的应用程序在尝试循环通过 ResultSet
时挂起。
有没有办法处理这个问题,比如如果数据库挂起,则使结果集超时?
【问题讨论】:
【参考方案1】:在 java.sql.Statement 接口上有一个 setQueryTimeout(int)。您应该在调用 executeQuery() 之前调用它。
您也可以通过在 Statement 上调用 cancel() 来异步取消正在运行的查询。
编辑:Oracle jdbc 驱动程序版本 6 肯定支持这些方法,因为我在我的一个项目中使用它。
【讨论】:
但请检查您的 JDBC 驱动程序是否真的支持此功能,因为它对于 ResultSets 是可选的 @GáborHargitai 我该如何检查?特别是对于 DB2 通用 JDBC 驱动程序提供程序,我正在疯狂地搜索,但没有找到对我有帮助的文档:( 使用queryTimeout
并不适用于所有情况。例如,如果ResultSet
作为StoredProcedure
中的输出参数返回。超时仅在 CallableStatement.execute()
方法中受到尊重以上是关于如何超时 java.sql.ResultSet的主要内容,如果未能解决你的问题,请参考以下文章