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

JDBC 連接 MySQL 完整指南:步驟、參數詳解與實戰範例

     編輯:MySQL 綜合教學

JDBC 連接 MySQL 完整指南:步驟、參數詳解與實戰範例

什麼是 JDBC?

JDBC (Java Database Connectivity) 是用於執行 SQL 陳述式的 Java API,提供統一介面訪問多種關聯式資料庫。由一組 Java 類與介面組成,讓開發者能輕鬆發送 SQL 語句,構建資料庫應用。

三大核心連接步驟

  1. 載入註冊驅動程式:
    Class.forName("com.mysql.jdbc.Driver");
    // 或
    new com.mysql.jdbc.Driver();
  2. 定義連接 URL:

    JDBC URL 結構

    jdbc:mysql://host:port/dbname?param1=value1¶m2=value2
  3. 建立連接、Statement、執行 SQL:

    連接流程

    Connection conn = DriverManager.getConnection(url);
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT ...");

常用連接參數詳解

常用參數表

參數說明建議值
useUnicode使用 Unicode 字元集true
characterEncoding字元編碼(配合 useUnicode)UTF-8 或 GBK
autoReconnect自動重連(不推薦生產環境)false
failOverReadOnly故障轉移後是否唯讀true
maxReconnects最大重連嘗試次數3
connectTimeout連接超時(毫秒)30000
socketTimeoutSocket 讀寫超時(毫秒)30000
useSSL是否使用 SSLfalse(內網)
serverTimezone伺服器時區(8.0+ 必填)Asia/Shanghai 或 GMT%2B8
allowPublicKeyRetrieval允許獲取公鑰(8.0+ caching_sha2_password)true

完整實戰範例

import java.sql.*;

public class MysqlDemo {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/javademo?" +
                     "user=root&password=root&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("成功載入 MySQL 驅動");
            conn = DriverManager.getConnection(url);
            Statement stmt = conn.createStatement();
            
            // 建表
            String sql = "CREATE TABLE student (id CHAR(20), name VARCHAR(20), PRIMARY KEY(id))";
            int result = stmt.executeUpdate(sql);
            if (result != -1) System.out.println("建表成功");
            
            // 插入
            stmt.executeUpdate("INSERT INTO student VALUES('2012001','張三')");
            stmt.executeUpdate("INSERT INTO student VALUES('2012002','李四')");
            
            // 查詢
            ResultSet rs = stmt.executeQuery("SELECT * FROM student");
            System.out.println("學號\t姓名");
            while (rs.next()) {
                System.out.println(rs.getString(1) + "\t" + rs.getString(2));
            }
        } catch (SQLException e) {
            System.out.println("MySQL 操作錯誤"); e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) try { conn.close(); } catch (SQLException ignored) {}
        }
    }
}
注意: MySQL 8.0+ 驅動類名為 com.mysql.cj.jdbc.Driver,舊版為 com.mysql.jdbc.Driver。務必加上 serverTimezone 避免時區報錯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved