我有一个这样的片段:
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之后,我希望语句关闭,因为它的结果集已关闭。但是,它只显示" false"在检查statement.isClosed()。
时我误解了jdk doc吗?如下所示:closeOnCompletion()指定在关闭所有相关结果集时关闭此Statement。
=========================== 更新: 原来是我的粗心大意。最后一个语句实际上返回了预期的结果" true"。所以它不再是一个问题
答案 0 :(得分:2)
由于Statement取决于结果,我建议
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM table_A");
rs.close();
statement.close();
System.out.println(statement.isClosed());
如果您的最终要求是关闭语句,如果您的问题是为什么语句即使在调用onexit时也没有关闭,那么这是适用的,那么更好地引用javadocs。