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

JDBC 連接 DB2 完全指南:驅動選型、URL 格式、類庫部署、JSP/Servlet 最佳實踐

     編輯:DB2 教學

驅動架構與選型

驅動類型類別部署需求適用場景性能
Type 2 (APP)COM.ibm.db2.jdbc.app.DB2Driver客戶端安裝 DB2 Client (含 CLI)本地連接、高性能、需 DB2 Client 功能最佳 (共享記憶體/IPC)
Type 4 (NET)COM.ibm.db2.jdbc.net.DB2Driver純 Java,無需 DB2 Client遠程連接、應用服務器、容器化部署良好 (Socket 通訊)
Type 4 (JCC)com.ibm.db2.jcc.DB2Driver (JCC 通用驅動)單一 db2jcc4.jar (+ db2jcc_license_cu.jar)現代首選,支援所有平台、XA、DataSource、連接池優秀 (原生協議)

強烈建議:全面遷移至 JCC 驅動 (db2jcc4.jar),舊驅動已停止更新。

連接 URL 格式

模式URL 範本範例
Type 2 本地jdbc:db2:<database_alias>jdbc:db2:sample
Type 4 遠程jdbc:db2://<host>:<port>/<database>[:property=value...]jdbc:db2://192.168.1.10:50000/sample:retrieveMessagesFromServerOnGetMessage=true;
JCC DataSource程式化屬性設定ds.setServerName("host"); ds.setPortNumber(50000); ds.setDatabaseName("sample");

關鍵連接屬性

# 常用屬性
user=db2inst1
password=passwd
currentSchema=MYSCHEMA          # 設定默認 Schema
securityMechanism=3             # 3=USER_ONLY, 9=ENCRYPTED_PASSWORD
sslConnection=true              # SSL 加密
sslTrustStoreLocation=/path/truststore.jks
sslTrustStorePassword=changeit
blockingReadConnectionTimeout=30 # 秒
clientProgramName=MyApp         # 識別應用,便於監控

類庫部署

獨立應用 / 命令列

  • 將 db2jcc4.jar、db2jcc_license_cu.jar 加入 Classpath。
  • 或解壓 db2java.zip (舊版) 獲取 COM/ibm/db2/jdbc/... 目錄結構。

Web 應用 (Tomcat / WebSphere / Spring Boot)

  • Tomcat:JAR 放入 $CATALINA_HOME/lib (共享) 或 WEB-INF/lib (應用隔離)。不要改名為 .jar,保持原名。
  • WebSphere:共享庫關聯至應用/服務器類加載器。
  • Spring Boot:Maven 依賴 com.ibm.db2:jcc:11.5.9.0 (從 Maven Central 或 IBM 專有倉庫獲取)。

代碼範例:標準連接模式

// 1. 註冊驅動 (JDBC 4.0+ 可省略,自動 SPI 發現)
Class.forName("com.ibm.db2.jcc.DB2Driver");

// 2. 獲取連接
String url = "jdbc:db2://192.168.1.10:50000/sample";
Properties props = new Properties();
props.setProperty("user", "db2inst1");
props.setProperty("password", "passwd");
props.setProperty("currentSchema", "MYAPP");
Connection conn = DriverManager.getConnection(url, props);

// 3. 使用連接池 (生產必備) - HikariCP 範例
HikariConfig config = new HikariConfig();
config.setJdbcUrl(url);
config.setUsername("db2inst1");
config.setPassword("passwd");
config.addDataSourceProperty("currentSchema", "MYAPP");
config.setMaximumPoolSize(20);
DataSource ds = new HikariDataSource(config);

JSP/Servlet 架構最佳實踐

  • 禁用 JSP 直連資料庫:JSP 中直寫 JDBC 代碼極難維護、連接管理混亂、效能差。
  • 採用 Servlet + DataSource + 連接池:
    1. web.xml 或 context.xml 定義 JNDI DataSource (Tomcat: Resource 標籤)。
    2. Servlet init() 查詢 DataSource:InitialContext().lookup("jdbc/myDB")。
    3. 請求處理:try (Connection c = ds.getConnection()) { ... } 自動歸還連接。
    4. JSP 僅負責渲染,從 Request/Session 獲取 Servlet 準備的數據模型。
  • 集中異常處理、事務邊界、SQL 審計 在 Servlet/Filter 層實現。

常見坑點與解決

現象原因解決
ClassNotFoundException: COM.ibm.db2.jdbc.app.DB2Driver類庫未在 Classpath、JAR 損壞、版本不匹配改用 JCC 驅動 db2jcc4.jar,確認 JAR 完整
連接極慢 / 間歇性掛起DB2 服務器端配置不當 (MAXAGENTS, MAX_COORDAGENTS)、防火牆、DNS 反解析慢調整 DBM CFG、關閉 DNS 反查、檢查網路
中文亂碼字符集不匹配、JVM file.encoding、資料庫代碼頁統一 UTF-8:資料庫 CODEPAGE 1208、JVM -Dfile.encoding=UTF-8、連接屬性 characterEncoding=UTF-8
XA 事務失敗缺少 db2jcc_license_cu.jar、未啟用 XA 支援添加授權 JAR、DataSource 實現 XADataSource

結語

JDBC 連接 DB2 的現代標準是:JCC 驅動 (db2jcc4.jar) + Type 4 URL + 連接池 (HikariCP) + JNDI DataSource + Servlet 架構。拋棄舊驅動、拋棄 JSP 直連、拋棄手動連接管理。將資料庫訪問封裝於 Repository/DAO 層,配合 Spring 事務管理,構建可維護、高效能、雲原生就緒的數據訪問層。

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