在SQL Developer中,单击“取消任务”按钮会立即停止执行查询。我必须在我们的项目中实现相同的功能。
我使用BC4J作为ORM工具来执行查询。我必须取消一个名为thorugh view的搜索查询执行,它调用几个数据库函数/过程来获得结果。
我尝试使用viewObject.cancelQuery();
,但它没有任何效果;查询继续执行到最后。
我通过JDBC连接池连接,由BC4J处理。
答案 0 :(得分:2)
我的建议是
Runnable
实现
cancel()
方法
cancelQuery
resp。查询的cancel
<query thread>.interrupt()
将此事件发送给您的查询可运行;为此,您需要在<query thread>
中存储对查询线程的引用。此信号有时会中断活动IO操作!InterruptedException
中的SQLException
和run()
:如果这些异常是catched rollback transaction(如果只读取了一个只读查询)Thread.currentThread().isInterrupted()
,如果结果为真,则cancel()
cancel()
Swing和Eclipse RCP中都有辅助类支持这种设计。