Java 语句中的Close方法是否也在JDBC中中止DB的请求
我想知道,在语句类中调用close方法是否也会中止数据库中的sql查询,类似于cancel方法的做法 通过中止sql查询,我的意思是向服务器发送类似HTTP DELETE请求的内容以取消查询Java 语句中的Close方法是否也在JDBC中中止DB的请求,java,sql,jdbc,Java,Sql,Jdbc,我想知道,在语句类中调用close方法是否也会中止数据库中的sql查询,类似于cancel方法的做法 通过中止sql查询,我的意思是向服务器发送类似HTTP DELETE请求的内容以取消查询 如果应用程序不调用cancel()方法,也应该通过close()方法执行类似的操作。close方法在语句类中用于释放所使用的资源,这是因为到Derby的连接是应用程序外部的资源,垃圾收集器不会自动关闭它们。请注意,close方法会导致Derby中止正在进行的事务,但不会回滚该事务 您可以在语句类中的Clos
如果应用程序不调用cancel()方法,也应该通过close()方法执行类似的操作。close方法在语句类中用于释放所使用的资源,这是因为到Derby的连接是应用程序外部的资源,垃圾收集器不会自动关闭它们。请注意,close方法会导致Derby中止正在进行的事务,但不会回滚该事务
您可以在语句类中的Close方法中看到详细的解释,它用于释放所使用的资源,这是因为到Derby的连接是应用程序外部的资源,垃圾收集器不会自动关闭它们。请注意,close方法会导致Derby中止正在进行的事务,但不会回滚该事务
您可以在中看到一个详细的解释,关闭语句将关闭语句句柄,并且应该结束并取消分配数据库系统为该特定语句句柄保留的任何语句资源 我不确定“abort”是什么意思,但如果您试图在
execute
、executeQuery
或executeUpdate
的方法调用当前正在运行时关闭语句,则该行为取决于驱动程序,但可能会等到该方法调用完成后再关闭该语句。如果要中止正在执行的语句,应使用statement.cancel()
如果在结果集仍处于打开状态时尝试关闭语句(即
executeQuery
finished,但尚未读取或显式关闭结果集),则结果集将关闭,与该结果集关联的任何服务器资源(例如服务器端游标)也将关闭。但是,与执行类似,如果正在进行提取(例如作为ResultSet.next()
调用的一部分),则关闭可能会等待该提取完成,并使用语句.cancel()可能需要
来中止此类提取。关闭语句将关闭语句句柄,并应结束并取消分配数据库系统为该特定语句句柄保留的任何语句资源
我不确定“abort”是什么意思,但如果您试图在execute
、executeQuery
或executeUpdate
的方法调用当前正在运行时关闭语句,则该行为取决于驱动程序,但可能会等到该方法调用完成后再关闭该语句。如果要中止正在执行的语句,应使用statement.cancel()
如果在结果集仍处于打开状态时尝试关闭语句(即
executeQuery
finished,但尚未读取或显式关闭结果集),则结果集将关闭,与该结果集关联的任何服务器资源(例如服务器端游标)也将关闭。但是,与执行类似,如果正在进行提取(例如作为ResultSet.next()
调用的一部分),则关闭可能会等待该提取完成,并且可能需要使用Statement.cancel()
中止该提取。但它是否提交事务?语句关闭不应中止或回滚事务。在自动提交中,它应该提交,并且当禁用自动提交时,语句close绝对不应该回滚事务。是的,它应该提交事务,因为close方法不会回滚事务。语句close只应该在连接处于自动提交状态且语句尚未完成时提交事务(如:结果集仍处于打开状态)。如果close方法不回滚事务,那么这是否意味着cancel语句也不回滚事务?但它是否提交事务?语句close不应该中止或回滚事务。在自动提交中,它应该提交,并且当自动提交被禁用时,语句close绝对不应该回滚事务saction.Yes它应该提交事务,因为close方法不会回滚事务。只有在连接处于自动提交状态且语句尚未完成时,语句close才应该提交事务(如:结果集仍然打开)。如果close方法不回滚事务,那么这是否意味着cancel语句也不回滚事务?您说的“abort”是什么意思?@MarkrotVeel,我已经编辑了我的问题。您说的“abort”是什么意思?@MarkrotVeel,我已经编辑了我的问题。如果我在结果集仍然从服务器/数据库获取输出时关闭语句对象,并且没有从语句类调用cancel方法,那么它将关闭resultset对象,但它会通过调用类似HTT的东西取消服务器/数据库中已经运行的查询吗P DELETE?@这取决于驱动程序,以及它是否在executeQuery
期间获取完整的结果集,或者它是否在调用resultSet.next()
时按需获取行。但通常,我会假设,如果驱动程序在executeQuery
期间获取,则调用close()
可能会阻塞(等待)直到由于锁定或其他线程安全措施而完成,或者在关闭之前取消正在进行的获取。如果在结果集仍在从服务器/数据库获取输出时关闭语句对象,并且没有从语句类调用cancel方法,则它将关闭resultset对象,但将它将取消服务器/数据库中已经运行的查询