import java.sql.*; 即可使用。COM.ibm.db2.jdbc.app.DB2Driver,需安裝 DB2 Client,效能最佳。COM.ibm.db2.jdbc.net.DB2Driver,純 Java,無需 Client,適合遠端部署。db2java.zip (或 db2jcc.jar 新版),位於 DB2 安裝目錄 java/ 或 JDK lib/ 下。| 類型 | 格式 | 範例 |
|---|---|---|
| 本地 (Type 2) | jdbc:db2:<資料庫別名> | jdbc:db2:rdb (資料庫需在預設實例) |
| 遠端 (Type 4) | jdbc:db2://<主機>:<埠>/<資料庫> | jdbc:db2://192.168.1.10:50000/rdb |
註:DB2 預設監聽埠為 50000,可透過 db2 get dbm cfg | grep SVCENAME 確認。
// 1. 註冊驅動 (二擇一)
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); // Type 2
// Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance(); // Type 4
// 2. 取得連線
Connection con = DriverManager.getConnection(url, user, password);
// 3. 執行 SQL ...
// 4. 關閉資源
con.close();
db2java.zip 更名為 db2java.jar,複製至 $CATALINA_HOME/common/lib/ (Tomcat 5/6) 或 lib/ (Tomcat 7+)。DriverManager.getConnection() 取得連線。替代註冊方式 (程式碼內):
DriverManager.registerDriver(new COM.ibm.db2.jdbc.app.DB2Driver());
// 或
DriverManager.registerDriver(new COM.ibm.db2.jdbc.net.DB2Driver());
DataSource (Tomcat context.xml + JNDI) 或獨立連線池 (HikariCP, DBCP2),禁止逐請求建立連線。PreparedStatement 防 SQL 注入並利用計畫快取。MAXAPPLS, MAXAGENTS, IDLE_TIMEOUT) 不當,需 DBA 協助調整。| 錯誤 | 原因 | 解決 |
|---|---|---|
| ClassNotFoundException: COM.ibm.db2.jdbc.app.DB2Driver | db2java.jar 未在 Classpath | 確認 jar 放置位置與 Tomcat 重啟 |
| SQL30081N: Communication error | 主機/埠/防火牆/實例未啟動 | 驗證 DB2 監聽埠、防火牆、db2start |
| License file not found | Type 2 驅動需授權檔 | 安裝 DB2 Client 或改用 Type 4 驅動 |
掌握驅動選型、連線字串、部署架構三要素,即能構建穩定高效的 Java-DB2 應用系統。