[英]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.