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

Eclipse 連接 MySQL JDBC 完整入門教程:驅動導入、連接代碼、URL 解析與異常處理

     編輯:MySQL 綜合教學

1. 創建 Java 項目

  • File → New → Java Project,項目名 JDBCDemo。

2. 導入 MySQL JDBC 驅動 JAR

  • 下載:Connector/J → mysql-connector-java-x.x.x.jar。
  • Eclipse:右鍵專案 → Build Path → Configure Build Path → Libraries → Classpath → Add External JARs → 選中 JAR → Apply and Close。
  • 或建立 lib 目錄放入 JAR,右鍵 JAR → Build Path → Add to Build Path。

3. 核心連接代碼模板

import java.sql.*;

public class MySQLConn {
    public static void main(String[] args) {
        // 1. 加載驅動 (JDBC 4.0+ 可省略,保留兼容舊版)
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");  // 8.0+ 驅動類名
            System.out.println("Driver loaded");
        } catch (ClassNotFoundException e) {
            System.err.println("Driver not found!");
            e.printStackTrace();
            return;
        }

        // 2. 建立連接
        String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4";
        String user = "root";
        String pwd = "123";

        try (Connection conn = DriverManager.getConnection(url, user, pwd)) {
            System.out.println("Connected!");

            // 3. 執行查詢
            try (Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("SELECT * FROM user")) {

                while (rs.next()) {
                    System.out.println("name: " + rs.getString("name"));
                }
            }
        } catch (SQLException e) {
            System.err.println("SQL Error: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

4. JDBC URL 詳細解析

jdbc:mysql://[host][:port]/[database][?properties]
jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4&allowPublicKeyRetrieval=true
參數推薦值說明
useSSLfalse本地/內網開發關閉 SSL,減少握手開銷
serverTimezoneUTC 或 Asia/Shanghai避免 CST 歧義導致時間偏移
characterEncodingutf8mb4統一字符集,防止中文亂碼
allowPublicKeyRetrievaltrue8.0+ caching_sha2_password 需獲取公鑰
autoReconnecttrue舊版參數,新版建議用連接池管理重連
rewriteBatchedStatementstrue批量 INSERT 重寫為多值 INSERT,大幅提速

5. 異常處理最佳實踐

  • try-with-resources:Connection、Statement、ResultSet 實現 AutoCloseable,自動關閉,防洩漏。
  • 分層捕獲:ClassNotFoundException (驅動缺失) / SQLException (連接/執行錯誤)。
  • 日誌而非打印:生產用 SLF4J + Logback,記錄 e.getSQLState()、e.getErrorCode()、e.getMessage()。

6. 進階:PreparedStatement 防注入與批量操作

String sql = "INSERT INTO user (username, email) VALUES (?, ?)";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
    for (int i = 0; i < 1000; i++) {
        ps.setString(1, "user" + i);
        ps.setString(2, "user" + i + "@ex.com");
        ps.addBatch();
    }
    int[] counts = ps.executeBatch();  // 批量執行
    System.out.println("Inserted: " + counts.length);
}

7. 架構分層理解

應用代碼 (JDBC API)
      │
      ▼
JDBC 驅動 (mysql-connector-j)  ← 實現標準接口,轉換為 MySQL 協議
      │
      ▼
MySQL Server (TCP 3306 / Unix Socket)

掌握這三層,排查問題時能快速定位:代碼邏輯 → 驅動版本/參數 → Server 配置/權限/網絡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved