本文提供一個完整的 Java 連接 MySQL 資料庫工具類範例,包含資料庫連線管理、預處理語句執行、結果集處理以及資源關閉等核心功能。此範例採用單例模式管理資料庫連線,適合中小型專案快速整合。
getConnection() 封裝 DriverManager 邏輯,支援 JDBC URL、帳號密碼配置closeInfo() 統一關閉 Connection、PreparedStatement、ResultSet,避免記憶體洩漏resultSet() 支援參數化 SQL 查詢,回傳 ResultSet 物件result() 執行 UPDATE/INSERT/DELETE,回傳布林值表示是否成功package sns.team6.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 資料庫連線輔助類
* @author 徐銳
*/
public class DBHelper {
// MySQL 驅動類別名稱
private static final String DRIVER = "com.mysql.jdbc.Driver";
// 資料庫連線 URL
private static final String URL = "jdbc:mysql://localhost:3306/snsteam6";
// 資料庫帳號
private static final String USERNAME = "root";
// 資料庫密碼
private static final String PASSWORD = "root";
/**
* 取得資料庫連線物件
* @return Connection 物件,連線失敗回傳 null
*/
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 關閉資料庫相關資源
* @param conn 連線物件
* @param pst 預處理語句物件
* @param rst 結果集物件
*/
public static void closeInfo(Connection conn, PreparedStatement pst, ResultSet rst) {
try {
if (rst != null) {
rst.close();
}
if (pst != null) {
pst.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 執行查詢並回傳結果集
* @param sql SQL 查詢語句
* @param params 參數陣列,可為 null
* @return ResultSet 物件,異常時回傳 null
*/
public static ResultSet resultSet(String sql, Object[] params) {
Connection conn = null;
PreparedStatement pst = null;
ResultSet rst = null;
try {
conn = DBHelper.getConnection();
pst = conn.prepareStatement(sql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++) {
pst.setObject(i + 1, params[i]);
}
}
rst = pst.executeQuery();
} catch (SQLException e) {
rst = null;
e.printStackTrace();
}
return rst;
}
/**
* 執行增刪改操作
* @param sql SQL 執行語句
* @param params 參數陣列,可為 null
* @return 執行成功回傳 true,否則 false
*/
public static boolean result(String sql, Object[] params) {
boolean flag = false;
Connection conn = null;
PreparedStatement pst = null;
try {
conn = DBHelper.getConnection();
pst = conn.prepareStatement(sql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++) {
pst.setObject(i + 1, params[i]);
}
}
int row = pst.executeUpdate();
if (row > 0) {
flag = true;
}
} catch (SQLException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
}
若專案規模較大,建議引入 Spring JDBC Template 或 MyBatis 等持久層框架,可進一步簡化資料庫操作程式碼,提升開發效率與維護性。