java - Statement中的Close方法是否也在JDBC中中止DB的请求
问题描述
我想知道,在Statement类中调用close方法是否也会中止数据库中的sql查询,类似于cancel方法是怎么做的?
通过中止 sql 查询,我的意思是向服务器发送类似 HTTP DELETE 请求以取消查询。
如果应用程序不调用 cancel() 方法,是否也应该通过 close() 方法来完成这样的事情。
解决方案
关闭语句会关闭语句句柄,并且应该结束并取消分配数据库系统为该特定语句句柄持有的任何语句资源。
我不确定“中止”是什么意思,但是如果您尝试在方法调用 或当前正在运行时关闭语句execute
,则该行为取决于驱动程序,但可能会等到该方法调用完成之前它关闭语句。如果要中止正在进行的语句执行,则应使用.executeQuery
executeUpdate
Statement.cancel()
executeQuery
如果您在结果集仍处于打开状态(即已完成,但您尚未读取或显式关闭结果集)时尝试关闭语句,则结果集将被关闭,并且与该结果集关联的任何服务器资源(例如服务器端游标)也将被关闭。然而,与执行类似,如果获取正在进行中(例如,作为ResultSet.next()
调用的一部分),则关闭可能会等到该获取完成,并且Statement.cancel()
可能需要使用 来中止此类获取。
推荐阅读
- swift - 使用 OutputStream 将 CircularBuffer (swift-nio) 写入 Swift 中的文件?
- c++ - 为什么点运算符的值在 C++ 中没有改变?
- android - android蓝牙客户端和服务器同时运行
- python - OSError: [WinError 6] 句柄无效 selenium + argparse
- javascript - 是否可以在mounted()之后将数组作为道具传递?
- bash - 用于侦听特定端口的 Bash 脚本直到条件应该运行
- angular - Angular 10 类型“可观察”
' 不可分配给类型 'Observable >' - ios - 在 Obj 中查找 IPV6 地址。苹果手机
- python - 如何使用 train_test_split 将未标记的数据拆分为训练集和测试集?
- c# - 如何将列表框中的所有数字相加?