2014-10-27 28 views
1

正常工作我有这样一个片段:closeOnCompletion不会在MySQL JDBC 5.1.32

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()); 

closeOnCompletion被调用后,我想到的声明被关闭,因为它的结果集被关闭。但是,在检查statement.isClosed()时它只显示“false”。

我误解了jdk文档吗?正如它所说的:closeOnCompletion()指定当它的所有依赖结果集关闭时,该Statement将被关闭。

=========================== 更新: 原来是我的疏忽。最后一条语句实际上返回了预期的“真”结果。因此,它不再是一个问题

+0

你不必在*'.executeQuery()'之前调用'.closeOnCompletion()'*吗? – eggyal 2014-10-27 09:08:49

+0

对不起,我在检查真实代码中的结果时犯了一个错误。它实际上显示“真正”时checkin statement.isClosed() – smonica 2014-10-29 07:08:59

回答

2

由于声明是依赖于结果,我建议这个

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

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

这是适用的,如果你最终要的是关闭的语句,如果你的问题是,为什么说法不打烊,即使称为onexit,然后更好地引用javadoc。