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

JDBC 連接 MySQL 完整步驟教學:驅動、連線、CRUD、事務控制

     編輯:MySQL 綜合教學

JDBC 連接 MySQL 完整步驟教學:驅動、連線、CRUD、事務控制

JDBC (Java Database Connectivity) 提供統一 API 存取關聯式資料庫。本文以 MySQL 為例,涵蓋驅動載入、連線建立、Statement/PreparedStatement 操作、結果集處理與事務管理。

1. 什麼是 JDBC?

  • Java 操作資料庫的標準介面
  • 屏蔽資料庫差異,同一套程式碼支援 MySQL、Oracle、SQL Server 等
  • 驅動程式由各資料庫廠商實作 (MySQL: mysql-connector-java)

JDBC 架構圖

2. 環境準備

  1. 下載 mysql-connector-java-5.1.x-bin.jar
  2. 加入 CLASSPATH:D:/javasoft/mysql-connector-java-5.1.5-bin.jar
  3. 或 Maven 依賴:
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>

3. 七大核心步驟

  1. 載入驅動:Class.forName("com.mysql.jdbc.Driver") (5.1+) 或 com.mysql.cj.jdbc.Driver (8.0+)
  2. 建立連線:DriverManager.getConnection(url, user, pass)
  3. 建立 Statement:conn.createStatement()
  4. 執行 SQL:executeQuery() 查詢 / executeUpdate() 增刪改
  5. 處理結果集:ResultSet.next() 迭代 + getString()/getInt()
  6. 關閉 ResultSet
  7. 關閉 Statement
  8. 關閉 Connection

4. 完整程式碼範例 (查詢)

String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(url, username, password);
    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT * FROM user");

    while (rs.next()) {
        System.out.println(rs.getString("username"));
        System.out.println(rs.getInt("password"));
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    if (rs != null) try { rs.close(); } catch (SQLException ignore) {}
    if (stmt != null) try { stmt.close(); } catch (SQLException ignore) {}
    if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
}

驅動載入 建立 Statement 執行查詢

5. 增刪改與 executeUpdate()

  • 無結果集,回傳 int 影響行數
  • 範例:stmt.executeUpdate("INSERT INTO user VALUES (1, 'Tom', '123')")

6. 事務控制

conn.setAutoCommit(false);  // 關閉自動提交
try {
    stmt.executeUpdate("UPDATE account SET money=money-100 WHERE id=1");
    stmt.executeUpdate("UPDATE account SET money=money+100 WHERE id=2");
    conn.commit();  // 全部成功提交
} catch (SQLException e) {
    conn.rollback();  // 任一失敗回滾
    e.printStackTrace();
} finally {
    conn.setAutoCommit(true);
}

經典場景:轉帳 — 要麼全成功,要麼全失敗,保證資料一致性。

進階建議

  • 生產環境使用 PreparedStatement 防 SQL 注入、提升效能
  • 連線池 (HikariCP, Druid) 管理連線生命週期
  • 資源關閉使用 try-with-resources (Java 7+) 自動化
  • 驅動版本對應 MySQL 版本:5.1.x 對 5.6/5.7,8.0.x 對 8.0+
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved