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

JDBC 連線 DB2 實例完整指南:驅動路徑、CLASSPATH 設定與範例程式碼

     編輯:DB2 教學

核心驅動檔案位置

DB2 安裝目錄自帶 JDBC Type 4 驅動(純 Java,無需 Client),預設路徑:

  • C:\Program Files\IBM\SQLLIB\java\db2jcc.jar — 核心驅動
  • C:\Program Files\IBM\SQLLIB\java\db2jcc_license_cu.jar — 授權檔(連線必備)
  • (選用)db2jcc_license_cisuz.jar — z/OS、iSeries 等平台授權

環境變數 CLASSPATH 設定

SET CLASSPATH=.;C:\Program Files\IBM\SQLLIB\java\db2jcc.jar;C:\Program Files\IBM\SQLLIB\java\db2jcc_license_cu.jar;C:\Program Files\IBM\SQLLIB\java\db2jcc_license_cisuz.jar

或在 IDE(Eclipse/IntelliJ)專案建置路徑中加入上述 JAR。

關鍵相容性提醒:必須使用 IBM JDK

實測發現:搭配 Oracle/OpenJDK 執行會擲出 ClassNotFound 或驅動初始化異常。 原因在於 IBM JDBC 驅動(db2jcc)對 IBM JCE/JCE 提供者有依賴。請使用 DB2 安裝目錄自帶的 JDK:

C:\Program Files\IBM\SQLLIB\java\jdk

在 IDE 中設定 Project SDK 指向此路徑,或在啟動參數指定 -Djava.home=...。

標準連線程式碼範例

package db2;

import java.sql.*;

public class BaseConnection {
    private final String driver = "com.ibm.db2.jcc.DB2Driver";
    // 遠端連線格式:jdbc:db2://host:port/dbName
    private final String url = "jdbc:db2://localhost:50000/SAMPLE";
    private final String user = "db2admin";
    private final String password = "admin";
    private Connection conn = null;

    public BaseConnection() {
        try {
            Class.forName(driver);
            this.conn = DriverManager.getConnection(url, user, password);
            System.out.println("連線成功");
        } catch (Exception e) {
            System.err.println("驅動載入或連線失敗: " + e.getMessage());
            e.printStackTrace();
        }
    }

    public Connection getConnection() { return conn; }

    public void close() {
        try { if (conn != null) conn.close(); }
        catch (Exception e) { System.err.println("關閉連線失敗: " + e.getMessage()); }
    }

    public static void main(String[] args) {
        BaseConnection bc = new BaseConnection();
        // 測試查詢
        try (Statement st = bc.getConnection().createStatement();
             ResultSet rs = st.executeQuery("SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1")) {
            if (rs.next()) System.out.println("Server Date: " + rs.getDate(1));
        } catch (Exception e) { e.printStackTrace(); }
        finally { bc.close(); }
    }
}

連線 URL 格式對照表

連線類型URL 格式範例
本地 (Type 2)jdbc:db2:dbNamejdbc:db2:SAMPLE
遠端 (Type 4)jdbc:db2://host:port/dbNamejdbc:db2://192.168.1.10:50000/SAMPLE
附加參數jdbc:db2://host:port/dbName:key=value;...jdbc:db2://localhost:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=true;

常見錯誤與排查

  • ClassNotFoundException: com.ibm.db2.jcc.DB2Driver → CLASSPATH 遺漏 db2jcc.jar 或 JDK 非 IBM 版。
  • SQLState 42968: License file not found → 缺少 db2jcc_license_cu.jar。
  • 連線逾時 → 檢查防火牆、DB2 通訊協定 (TCP/IP) 是否啟用、port 50000 是否監聽(參見文章 97497)。

進階:連線池與 DataSource

生產環境建議使用 javax.sql.DataSource 實作(如 com.ibm.db2.jcc.DB2SimpleDataSource、HikariCP、DBCP2)管理連線池,避免頻繁建立/關閉連線的效能損耗。

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