简体   繁体   English

closeOnCompletion在MySQL JDBC 5.1.32中无法正常工作

[英]closeOnCompletion doesn't work properly in MySQL JDBC 5.1.32

I have a snippet like this: 我有一个这样的代码段:

Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM table_A");

statement.closeOnCompletion();
System.out.println(statement.isCloseOnCompletion());

rs.close();
System.out.println(statement.isClosed());

After closeOnCompletion is invoked, I expect the statement to be closed, as its result set is closed. 调用closeOnCompletion之后,由于该语句的结果集已关闭,我希望该语句将被关闭。 However, it just shows "false" when checking statement.isClosed(). 但是,它在检查statement.isClosed()时仅显示“ false”。

Did I misunderstand the jdk doc? 我误解了JDK文档吗? as it says: closeOnCompletion() Specifies that this Statement will be closed when all its dependent result sets are closed. 就像它说的那样:closeOnCompletion()指定此语句在其所有从属结果集关闭时将被关闭。

=========================== Update: It turns out to be my carelessness. ==========================更新:原来是我的粗心。 The last statement actually returns a result of expected "true". 最后一条语句实际上返回预期“ true”的结果。 So it's no longer an issue 所以这不再是问题

Since Statement is depend on result I would suggest this 由于声明取决于结果,我建议这样做

Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM table_A");

rs.close();
statement.close();  
System.out.println(statement.isClosed());

This is applicable if your ultimate want is to close statement, if your question is why statement is not closing even when called onexit, then better to refer javadocs. 如果您的最终希望是要关闭语句,那么这适用。如果您的问题是为什么即使调用onexit语句也没有关闭,则最好引用javadocs。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM