根据http://docs.oracle.com/javase/7/docs/api/java/sql/statement.html#close()的文档,
如果我们仍然需要关闭ResultSet
,我们可能需要一个嵌套的try-with-resources语句,因为我们可能会为语句
设置如下参数:
try (Connection conn = connectionProvider.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql) {//resources of conn and pst
setPrepareStatementParameter(pstmt, kvs);//need to set parameters, so I have to put ResultSet into another try-with-resources statement
try (ResultSet res = pstmt.executeQuery()) {
..............
}
}
是否将ResultSet放入一个单独的try-with-resources语句中,因为文档声明关闭语句
将关闭ResultSet
您的示例涵盖的连接、语句和结果集之间的交互范围太有限。考虑以下几点:
try (Connection conn = connectionProvider.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);) {
for (int i = 0; i < kvs.length; i++) {
setPrepareStatementParameter(pstmt, kvs[i]);
// do other stuff
// Place the ResultSet in another try with resources
// to ensure the previous iteration's ResultSet
// is closed when the next iteration begins
try (ResultSet res = pstmt.executeQuery()) {
..............
}
}
}
在上面的示例中,PreparedStatement被参数化,并在for-loop中执行kvs.length
次数。想象一下这样一个情况,参数化过程,由于任何原因,花费了相当长的时间。请注意,关闭PreparedStatement对我们没有好处,因为我们希望在for循环的每次迭代中重用已编译的SQL语句。当然,将ResultSet嵌套到它自己的try-with-resources块中--从而确保先前迭代的ResultSet是关闭的,但PreparedStatement仍然是打开的--是值得努力的。
问题内容: 我想知道将 return 语句放在 try-with-resources 块中是否会阻止资源自动关闭。 如果我这样写, 连接 会关闭吗?在Oracle文档中指出: try-with-resources语句可确保在语句末尾关闭每个资源。 如果由于return语句而从未到达该语句的末尾,该怎么办? 问题答案: 根据Oracle的教程,“无论try语句正常完成还是突然完成,[[资源]都将关闭
问题内容: 有没有更好的方法来执行以下操作: 看起来很讨厌,我不想这样做: 保持最高效率。 问题答案: 也许您可以尝试这样的事情: 您可以这样称呼它: 这将尝试按它们在列表中的顺序调用这些方法。如果您想传递任何参数,可以像下面这样在列表之后传递它们:
主要内容:Java SE 7:Try-With-Resources基础知识,Java SE 7:Try-With-Resources规则,Java SE 9:Try-With-Resources改进在这篇文章中,我们将讨论Java SE 9中的一些改进语句。现在让我们开始学习这个构造。 Java SE 7:Try-With-Resources基础知识 Java SE 7引入了一个新的构造: 语句,用于更好的异常处理。 如果没有这个构造,开发人员必须编写大量冗余和难看的代码。 如果开发人员忘记正确
本文向大家介绍如何在Java 9中的try-with-resources语句中声明多个资源?,包括了如何在Java 9中的try-with-resources语句中声明多个资源?的使用技巧和注意事项,需要的朋友参考一下 在Java 9中对try-with-resources语句进行了改进。如果我们已经有一个最终的或等同于最终变量的资源,那么我们可以在try-with-resources语句中使用该
我有两个嵌套的IF语句。。 <代码>=如果($B3=$K$3,日期(年(D3)$L$3,月(D3)$M$3,天(D3)),如果($B3=$K$4,日期(年(D3)$L$4,月(D3)$M$4,天(D3)),如果($B3=$K$5,日期(年(D3)$L$5,月(D3)$M$5,天(D3)),如果($B3=$K$6,日期(年(D3)$L$6,月(D3)$M$6,天(D3)),“”) 和