首页 > 解决方案 > Statement中的Close方法是否也在JDBC中中止DB的请求

问题描述

我想知道,在Statement类中调用close方法是否也会中止数据库中的sql查询,类似于cancel方法是怎么做的?

通过中止 sql 查询,我的意思是向服务器发送类似 HTTP DELETE 请求以取消查询。

如果应用程序不调用 cancel() 方法,是否也应该通过 close() 方法来完成这样的事情。

标签: javasqljdbc

解决方案


关闭语句会关闭语句句柄,并且应该结束并取消分配数据库系统为该特定语句句柄持有的任何语句资源。

我不确定“中止”是什么意思,但是如果您尝试在方法调用 或当前正在运行时关闭语句execute,则该行为取决于驱动程序,但可能会等到该方法调用完成之前它关闭语句。如果要中止正在进行的语句执行,则应使用.executeQueryexecuteUpdateStatement.cancel()

executeQuery如果您在结果集仍处于打开状态(即已完成,但您尚未读取或显式关闭结果集)时尝试关闭语句,则结果集将被关闭,并且与该结果集关联的任何服务器资源(例如服务器端游标)也将被关闭。然而,与执行类似,如果获取正在进行中(例如,作为ResultSet.next()调用的一部分),则关闭可能会等到该获取完成,并且Statement.cancel()可能需要使用 来中止此类获取。


推荐阅读