当前位置:  开发笔记 > 编程语言 > 正文

如何中止正在运行的JDBC事务?

如何解决《如何中止正在运行的JDBC事务?》经验,为你挑选了3个好方法。

有没有办法提前中止交易?说,我已经向数据库发送了一个命令,运行五分钟,四分之后,我想中止它.

JDBC是否定义了一种方法来向数据库发送"停止在此连接上执行的任何操作"信号?



1> John M..:

正如james所提到的,Statement.cancel()将取消正在运行的Statement(select,update等)的执行.JDBC文档特别指出Statement.cancel()从另一个线程运行是安全的,甚至建议在超时线程中调用它.

取消声明后,您仍然无法回滚事务.这没有记录为从另一个线程运行是安全的.该Connection.rollback()应该在主线程中完成所有其他JDBC调用发生.在取消的Statement.execute ...()调用以JDBCException(由于取消)完成后,您可以处理该问题.



2> Gowri..:

我猜你想要做的是阻止你的应用程序阻止长时间运行的查询/事务.为此,JDBC支持查询超时的概念.您可以使用以下命令设置查询超时:

java.sql.Statement.setQueryTimeout(seconds)

并通过回滚事务来处理方法SQLException引发的抛出execute()(当然,只有在autocommit设置为false且JDBC驱动程序支持Statement.cancel()时才会起作用).



3> 小智..:

查看Statement.cancel().

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有