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

JDBC 入門完全指南:從驅動安裝到建立資料表的標準流程

     編輯:Java 程式設計入門

JDBC (Java Database Connectivity) 是 Java 存取關聯式資料庫的標準 API。本文涵蓋環境建置、驅動管理、連線建立、SQL 執行、資料表建立的完整入門流程,並以「咖啡店」範例資料庫貫穿始終。

環境建置三步驟

  1. 安裝 JDK: 需 JDK 1.2+ (含 JDBC 2.0)。下載:Oracle JDK。
  2. 安裝 JDBC 驅動:
    • Type 4 (純 Java) 驅動:複製 `.jar` 至 classpath 即可 (如 MySQL Connector/J、PostgreSQL JDBC)。
    • JDBC-ODBC Bridge (舊版 JDK 內建):需系統配置 ODBC 資料源 (DSN)。
  3. 資料庫系統: 安裝並啟動目標資料庫 (MySQL、PostgreSQL、Oracle、SQL Server 等)。

核心兩步驟:載入驅動、建立連線

1. 載入驅動類別

// MySQL 範例
Class.forName("com.mysql.cj.jdbc.Driver");
// PostgreSQL
Class.forName("org.postgresql.Driver");
// Oracle
Class.forName("oracle.jdbc.OracleDriver");
// JDBC-ODBC Bridge (已移除於 JDK 8+)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Class.forName() 會觸發靜態初始化區塊,驅動自動向 `DriverManager` 註冊。**無需手動 `new Driver()`**。

2. 建立連線

String url = "jdbc:mysql://localhost:3306/coffeebreak?useSSL=false&serverTimezone=UTC";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);

URL 格式:`jdbc::`。`DriverManager` 會根據 subprotocol 選擇對應驅動。

範例資料庫:COFFEEBREAK

COFFEES 表 (咖啡產品)

CREATE TABLE COFFEES (
    COF_NAME VARCHAR(32) PRIMARY KEY,  -- 咖啡名稱 (PK)
    SUP_ID   INTEGER,                  -- 供應商 ID (FK)
    PRICE    FLOAT,                    -- 價格
    SALES    INTEGER,                  -- 本週銷售磅數
    TOTAL    INTEGER                   -- 累計銷售磅數
);

SUPPLIERS 表 (供應商)

CREATE TABLE SUPPLIERS (
    SUP_ID   INTEGER PRIMARY KEY,      -- 供應商 ID (PK)
    SUP_NAME VARCHAR(40),              -- 名稱
    STREET   VARCHAR(40),              -- 街道
    CITY     VARCHAR(20),              -- 城市
    STATE    VARCHAR(20),              -- 州/省
    ZIP      VARCHAR(10)               -- 郵遞區號
);

關聯: `COFFEES.SUP_ID` 參照 `SUPPLIERS.SUP_ID` (外鍵)。同一供應商可提供多種咖啡。

JDBC 程式碼建立資料表

String createCoffees = "CREATE TABLE COFFEES " +
    "(COF_NAME VARCHAR(32), " +
    "SUP_ID INTEGER, " +
    "PRICE FLOAT, " +
    "SALES INTEGER, " +
    "TOTAL INTEGER)";

try (Connection conn = DriverManager.getConnection(url, user, pass);
     Statement stmt = conn.createStatement()) {
    stmt.executeUpdate(createCoffees);
    System.out.println("COFFEES table created.");
} catch (SQLException e) {
    e.printStackTrace();
}

SQL 執行三大介面

介面用途關鍵方法
Statement靜態 SQL、DDL`executeUpdate(sql)`, `executeQuery(sql)`
PreparedStatement參數化 SQL、防注入、預編譯`setString(1, val)`, `executeUpdate()`
CallableStatement呼叫預存程序/函數`{call proc(?,?)}`, `registerOutParameter`

資源管理鐵律:try-with-resources

try (Connection conn = DriverManager.getConnection(url, user, pass);
     PreparedStatement pstmt = conn.prepareStatement("INSERT INTO COFFEES VALUES (?,?,?,?,?)")) {
    pstmt.setString(1, "Colombian");
    pstmt.setInt(2, 101);
    pstmt.setFloat(3, 7.99f);
    pstmt.setInt(4, 0);
    pstmt.setInt(5, 0);
    pstmt.executeUpdate();
} // 自動關閉 pstmt、conn (逆序)

常見錯誤與排查

  • ClassNotFoundException:驅動 JAR 未在 classpath。
  • SQLException: No suitable driver:URL 格式錯誤或驅動未註冊。
  • Communications link failure:資料庫未啟動、埠號錯誤、防火牆阻擋。
  • 中文亂碼:URL 加 `characterEncoding=utf8` (MySQL) / 確認資料庫/表/欄位字集一致。

掌握 JDBC 基礎,即可進階學習連線池 (HikariCP)、ORM (Hibernate/MyBatis)、事務管理、分散式資料庫存取等企業級主題。

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