问题描述
我有针对 Oracle 10g 数据库运行的 Java JDBC 应用程序.我设置了一个 PreparedStatement 来执行查询,然后调用 ps.executeQuery() 来运行它.有时查询需要很长时间,我需要杀死它.我有另一个线程访问该 PreparedStatement 对象,并对其调用 cancel().
I have Java JDBC application running against an Oracle 10g Database. I set up a PreparedStatement to execute a query, and then call ps.executeQuery() to run it. Occasionally the query takes a long time, and I need to kill it. I have another thread access that PreparedStatement object, and call cancel() on it.
我的问题是,这真的会杀死数据库中的查询吗?或者它只是将它从客户端切断,而查询仍在 Oracle 内部的某个地方运行?
My question is, does this actually kill the query in the database? Or does it just sever it from the client, and the query is still running somewhere in the bowels of Oracle?
谢谢!
推荐答案
答案是这是一个实施质量问题.如果您查看 javadoc 对于 Statement.cancel(),它表示如果 DBMS 和驱动程序都支持中止 SQL 语句",就会发生这种情况.
The answer is that it's a quality-of-implementation issue. If you look at the javadoc for Statement.cancel(), it says it'll happen "if both the DBMS and driver support aborting an SQL statement".
根据我使用各种版本的 Oracle JDBC 驱动程序的经验,Statement.cancel() 似乎可以满足您的需求.查询在取消时似乎立即停止执行.
In my experience with various versions of Oracle JDBC drivers, Statement.cancel() seems to do what you'd want. The query seems to stop executing promptly when cancelled.
这篇关于当我在 JDBC 应用程序中调用 PreparedStatement.cancel() 时,它是否真的在 Oracle 数据库中杀死了它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)