如何超时 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的主要内容,如果未能解决你的问题,请参考以下文章

如何现在ssh超时时间阿

android中如何获取超时时长的异常

如何模拟数据库连接超时

Axis2如何设置连接超时时间

弹性beantalk部署时间超过超时时间,我如何增加超时时间

如何解决SSH连接Linux超时自动断开