首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 連接 MySQL 完整步驟指南(含驅動配置、建表、查詢示例)

     編輯:Java 相關知識

環境準備

  1. 安裝 JDK(建議 JDK 8/11/17+)。
  2. 安裝 MySQL Server,記住 root 密碼。
  3. 下載 MySQL Connector/J 驅動(mysql-connector-j-8.x.x.jar),放入專案 Classpath(Maven 專案直接加依賴)。

Maven 依賴(推薦)

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
</dependency>

資料庫與建表腳本

CREATE DATABASE IF NOT EXISTS `scutcs` DEFAULT CHARACTER SET utf8mb4;
USE `scutcs`;

CREATE TABLE `student` (
    `sno` CHAR(7) NOT NULL PRIMARY KEY,
    `sname` VARCHAR(20) NOT NULL,
    `sex` CHAR(2) NOT NULL,
    `bdate` DATE NOT NULL,
    `height` DECIMAL(5,2) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `student` VALUES
('0104421','周遠行','男','1990-01-01',175.5),
('0208123','王義平','男','1991-02-02',170.0),
('0209120','何問起','女','1992-03-03',160.5);

JDBC 核心代碼範例

package com.example.jdbc;

import java.sql.*;

public class JdbcDemo {
    // MySQL 8.x 驅動類
    private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    // useSSL=false 關閉 SSL;serverTimezone=UTC 避免時區警告
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/scutcs?useSSL=false&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASS = "root";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 1. 加載驅動(JDBC 4.0+ 可省略,保留兼容)
            Class.forName(DRIVER);

            // 2. 建立連接
            conn = DriverManager.getConnection(URL, USER, PASS);
            System.out.println("✅ 資料庫連接成功!");

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

            // 4. 執行查詢
            String sql = "SELECT sno, sname FROM student";
            rs = stmt.executeQuery(sql);

            // 5. 處理結果集
            System.out.println("學號\t姓名");
            System.out.println("-----------------");
            while (rs.next()) {
                String sno = rs.getString("sno");
                // 關鍵:解決中文亂碼(舊版驅動可能需要)
                // String sname = new String(rs.getBytes("sname"), "UTF-8");
                String sname = rs.getString("sname"); // 新版驅動通常自動處理
                System.out.println(sno + "\t" + sname);
            }
        } catch (ClassNotFoundException e) {
            System.err.println("❌ 找不到驅動類:" + e.getMessage());
        } catch (SQLException e) {
            System.err.println("❌ SQL 執行異常:" + e.getMessage());
            e.printStackTrace();
        } finally {
            // 6. 關鍵:按逆序關閉資源
            closeQuietly(rs);
            closeQuietly(stmt);
            closeQuietly(conn);
        }
    }

    private static void closeQuietly(AutoCloseable resource) {
        if (resource != null) {
            try { resource.close(); } catch (Exception ignored) {}
        }
    }
}

常見問題排查

現象可能原因解決方案
ClassNotFoundException驅動 JAR 未在 ClasspathMaven 加依賴;非 Maven 手動加 JAR 到 Build Path
Communications link failureIP/端口錯誤、MySQL 未啟動、防火牆攔截檢查 3306 端口、bind-address、防火牆規則
Public Key Retrieval is not allowedMySQL 8 密碼插件需 SSL 或公開金鑰URL 加 allowPublicKeyRetrieval=true 或配置 SSL
中文亂碼字符集不一致URL 指定 characterEncoding=utf8,表/庫用 utf8mb4

進階建議

  • 生產環境務必使用**連接池**(HikariCP / Druid / DBCP2),避免頻繁建連開銷。
  • 優先使用 PreparedStatement 防 SQL 注入、利用預編譯緩存提升效能。
  • 大數據量查詢設置 stmt.setFetchSize(1000) 減少網絡交互。
  • 事務控制:conn.setAutoCommit(false),配合 commit()/rollback()。

結語

掌握 JDBC 基礎流程是 Java 後端開發的必修課。實際專案中建議直接使用 MyBatis、JdbcTemplate 或 Spring Data JPA 等封裝框架,減少樣板代碼,專注業務邏輯。

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