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

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+.