从另一个线程取消MySQL查询执行

时间:2013-12-09 09:29:18

标签: java mysql multithreading kill

我有两个主题。一个是从数据库中提取数据,另一个是使用中止按钮显示进度条。如果我按下中止按钮,则另一个线程执行的查询应该被取消。

我知道如何从命令提示符中删除它;但是,如果你们中的任何人都知道从java取消查询,那对我来说会有所帮助。

1 个答案:

答案 0 :(得分:3)

以下是一些可能有所帮助的提示:

您可以从另一个线程调用Statement.cancel来停止该声明

来自javadoc http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#cancel()

  

如果DBMS和驱动程序都支持,则取消此Statement对象   中止SQL语句。这个方法可以由一个线程使用   取消正由另一个线程执行的语句。

自5.0版以来,mysql驱动程序支持Statement.cancel

修改

您还可以使用Statement.setQueryTimeout(int seconds)

指定查询可以执行的最长时间

http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#setQueryTimeout(int)