Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Đóng kết nối JDBC/MySQL đúng cách trong khối finally

Giới thiệu

Luôn đóng kết nối (Connection), Statement, ResultSet trong khối finally để đảm bảo giải phóng tài nguyên ngay cả khi có exception.

1. Mã Java hoàn chỉnh

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class CloseConnectionDemoInFinallyBlock {
    public static void main(String[] args) {
        String JDBCURL = "jdbc:mysql://localhost:3306/web?useSSL=false";
        Connection con = null;
        try {
            con = DriverManager.getConnection(JDBCURL, "root", "123456");
            System.out.println("connection is open");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (con != null) con.close();
            } catch (SQLException sqlException) {
                sqlException.printStackTrace();
            }
        }
    }
}

2. Kết quả

connection is open

Đóng kết nối JDBC/MySQL đúng cách trong khối finally

3. Best Practice: Try-with-resources (Java 7+)

Tự động đóng tài nguyên implement AutoCloseable (Connection, Statement, ResultSet):

public class ModernJdbcDemo {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/web?useSSL=false";
        try (Connection con = DriverManager.getConnection(url, "root", "123456");
             PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE id = ?")) {
            
            ps.setInt(1, 1);
            try (ResultSet rs = ps.executeQuery()) {
                while (rs.next()) {
                    System.out.println(rs.getString("username"));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Ưu điểm: Ngắn gọn, an toàn, không quên close, xử lý exception tự động.

Lưu ý: Cần driver MySQL Connector/J 5.1.39+ hoặc 8.0+ hỗ trợ JDBC 4.1+.