java - 对没有任何参考的资源使用“尝试资源”
问题描述
考虑以下情况:
try (ResultSet resultSet = DriverManager.getConnection("jdbc:...", "user", "pass")
.createStatement().executeQuery(sql)) {
.
.
.
}
这是在资源中创建了三个资源的情况try
: a Connection
、 aStatement
和 a ResultSet
。
try 块结束后这三个资源会发生什么?他们是否都会被关闭,即使他们没有提及他们,还是只会resultSet
被关闭?
在尝试使用资源块时声明AutoCloseable
资源而不引用它们是否安全?
解决方案
只有ResultSet
将被关闭。如果要关闭多个资源,需要分别声明:
try (Connection conn = DriverManager.getConnection("jdbc:...", "user", "pass");
Statement stmt = conn.createStatement();
ResultSet resultSet = stmt.executeQuery(sql)) {
// do stuff...
}
推荐阅读
- php - 如何在 html php mysql 表中显示更多结果?
- java - 如何以编程方式查看 android zip 中的内容(无需解压缩)
- html - 在网页上保存更改
- libgdx - LibGDX 布尔值在最小化窗口后变为 false?
- php - 使用 Laravel 6.4 无法将变量数据传递给 PHP 上的 View
- python - 在没有互联网连接的 Windows 7 PC 上安装 Anaconda 以及 Spyder 和 Tensorflow
- javascript - 在角度 2+ 中动态调整元素大小时,您如何考虑滚动条的位置?
- python - sparse_categorical_crossentropy 和 categorical_crossentropy 有什么区别?
- mongodb - 使用 mongo-kafka 作为接收器连接器,如何将字段的值设置为 Date 类型?
- html - 如何使用 flexbox 将元素固定到 div 的底部?