首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

JDBC 連接 MySQL 完整七步曲:驅動加載、連接獲取、Statement/PreparedStatement、結果集處理、事務控制、資源關閉

     編輯:MySQL 資料庫相關知識

JDBC 定位

Java DataBase Connectivity —— 統一訪問關係型數據庫的標準 API,屏蔽底層驅動差異(MySQL/Oracle/PostgreSQL 等)。

核心七步驟

  1. 加載驅動:Class.forName("com.mysql.cj.jdbc.Driver");(5.1+ 建議 cj 版)。
  2. 建立連接:
    String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
    Connection conn = DriverManager.getConnection(url, "root", "root");
  3. 創建傳輸對象:
    • Statement stmt = conn.createStatement();(靜態 SQL)
    • PreparedStatement ps = conn.prepareStatement(sql);(參數化,**生產首選**)
  4. 執行 SQL:
    • 查詢:ResultSet rs = stmt.executeQuery(sql); / ps.executeQuery();
    • 增刪改:int rows = stmt.executeUpdate(sql); / ps.executeUpdate();(返回影響行數)
  5. 處理結果集:
    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        // ...
    }
  6. 事務控制:
    conn.setAutoCommit(false);
    try {
        // 多條 DML
        conn.commit();
    } catch (Exception e) {
        conn.rollback();
        throw e;
    } finally {
        conn.setAutoCommit(true);
    }
  7. 逆序關閉資源(finally 或 try-with-resources):
    if (rs != null) rs.close();
    if (stmt != null) stmt.close();
    if (conn != null) conn.close();

關鍵最佳實踐

  • 必須用 PreparedStatement:防 SQL 注入、預編譯緩存、類型安全。
  • 連接池:生產環境嚴禁手動創建連接,接入 HikariCP / Druid / Tomcat JDBC Pool。
  • URL 參數:useSSL=false、serverTimezone=UTC、characterEncoding=utf8mb4、allowPublicKeyRetrieval=true(8.0+)。
  • 異常處理:捕獲 SQLException,記錄 SQL 狀態碼(e.getSQLState())與廠商碼(e.getErrorCode())。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved