首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

JDBC 連接 MySQL 完整教程:從驅動加載到事務管理實戰

     編輯:MySQL 綜合教學

JDBC 核心概念

  • JDBC (Java Database Connectivity):Java 語言操作關係型資料庫的標準 API,屏蔽底層驅動差異,實現「寫一次,跑 überall」。
  • 驅動程式:各資料庫廠商實現的 JDBC 接口 Jar 包(MySQL 為 mysql-connector-java-x.x.x.jar)。

開發環境準備

  1. 下載 MySQL Connector/J 驅動 Jar。
  2. 將 Jar 加入專案 Classpath(IDE 專案依賴、Maven/Gradle 依賴、或手動加入 CLASSPATH 環境變數)。

標準 7 步操作流程

// 1. 加載驅動 (JDBC 4.0+ 可省略,ClassLoader 自動發現)
Class.forName("com.mysql.jdbc.Driver");  // MySQL 8.0+ 用 com.mysql.cj.jdbc.Driver

// 2. 建立連線
String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
String user = "root", pass = "root";
Connection conn = DriverManager.getConnection(url, user, pass);

// 3. 建立 Statement
Statement stmt = conn.createStatement();

// 4. 執行查詢
String sql = "SELECT * FROM user";
ResultSet rs = stmt.executeQuery(sql);

// 5. 處理結果集
while (rs.next()) {
    System.out.println(rs.getString("username") + " " + rs.getInt("password"));
}

// 6. 關閉 ResultSet
rs.close();

// 7. 關閉 Statement
stmt.close();

// 8. 關閉 Connection (最外層 finally 確保釋放)
conn.close();

關鍵點提示

  • executeQuery() 返回 ResultSet,游標初始在第一行之前,next() 移動到下一行並返回是否有數據。
  • ResultSet、Statement、Connection 皆為 JVM 外部資源,**必須在 finally 塊中顯式關閉**,防止連線洩漏。
  • 建議使用 try-with-resources (Java 7+) 自動關閉資源。

增刪改操作

  • 使用 executeUpdate(sql),返回受影響行數(int)。
  • 無 ResultSet,流程簡化為:連線 → Statement → executeUpdate → 關閉資源。

事務管理實戰

事務:一組原子性操作,要麼全成功,要麼全失敗。經典場景:轉賬。

Connection conn = null;
try {
    conn = DriverManager.getConnection(url, user, pass);
    conn.setAutoCommit(false);  // 關閉自動提交,開啟事務

    // 扣款
    stmt = conn.createStatement();
    stmt.executeUpdate("UPDATE account SET money=money-100 WHERE code='100001'");

    // 入款
    stmt.executeUpdate("UPDATE account SET money=money+100 WHERE code='100002'");

    conn.commit();  // 全部成功,提交事務
} catch (SQLException e) {
    if (conn != null) conn.rollback();  // 任一失敗,回滾
    e.printStackTrace();
} finally {
    // 關閉資源...
}

事務關鍵方法

方法說明
setAutoCommit(false)關閉自動提交,手動控制事務邊界
commit()提交事務,持久化所有更改
rollback()回滾事務,撤銷所有未提交更改

最佳實踐建議

  • 生產環境使用連線池(HikariCP、Druid、DBCP2)管理連線生命週期。
  • 優先使用 PreparedStatement 防 SQL 注入、利用預編譯提升性能。
  • 事務粒度盡量精細,避免長事務鎖定資源導致併發下降。
  • 異常處理中務必 rollback() 並記錄日誌,便於問題追蹤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved