Java如何在JDBC中自动关闭资源?

使用JDBC进行编程时,我们需要手动完成的一件事是确保关闭所有使用的资源。所有资源包括ResultSet,Statement并且Connection必须关闭。这通常会在我们的程序中产生很多样板代码。

从Java 7的一部分JDBC 4.1开始,我们可以使用该try-with-resources语句自动管理我们使用的资源。该try语句关闭该块正常或突然完成执行时使用的资源。

这是一个向我们展示如何使用该try-with-resources语句的示例。

package org.nhooo.example.jdbc;

import java.sql.*;

public class TryWithResourceJdbc {
    private static final String URL = "jdbc:mysql://localhost/nhooo";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";

    public static void main(String[] args) {
        try (Connection conn =
                 DriverManager.getConnection(URL, USERNAME, PASSWORD);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM products")) {

            while (rs.next()) {
                String code = rs.getString("code");
                String name = rs.getString("name");

                System.out.println("Code: " + code + "; Name: " + name);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Maven依赖

<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>

Maven中央