DB2 UDB 8.1 引入 Universal JDBC Driver 統一支援 JDBC/SQLJ;8.2 版本達到里程碑:
| 模式 | 通訊方式 | 部署依賴 | 適用場景 |
|---|---|---|---|
| Type 4 (Pure Java) | TCP/IP 直連 DB2 | 無原生庫,隨應用打包 | 遠程連接、跨平台、雲原生 — 首選 |
| Type 2 (Native) | IPC 共享記憶體 + 原生庫 | 需安裝 DB2 Client/共享庫 | 同一邏輯主機、Java 預存程序 (無 TCP/IP) |
db2set DB2COMM=TCPIP
db2 update dbm cfg using SVCENAME <tcp/ip service name>
SVCENAME 需對應 `/etc/services` (或 Windows 同類) 定義的埠號。
Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection conn = DriverManager.getConnection(
"jdbc:db2://localhost:50000/sample", "testuser", "testpassword");
Properties props = new Properties();
props.put("user", "testuser");
props.put("password", "testpassword");
Connection conn = DriverManager.getConnection(
"jdbc:db2://localhost:50000/sample", props);
部署提醒:Classpath 需 db2jcc.jar + 授權檔 db2jcc_license_cu.jar (LUW) 或 db2jcc_license_cisuz.jar (z/OS 連接)。
db2jcc.jar、db2jcc_license_cu.jar
DB2 8.2 新增 SNAPSHOT_APPL_INFO、SNAPSHOT_APPL 表函數,配合 tpmon_client_app 應用標識,開發人員無需 DBA 工具即可量測:
WITH t1 AS (
SELECT * FROM TABLE(SNAPSHOT_APPL_INFO('SAMPLE',-1))
WHERE tpmon_client_app = 'Payroll Module'
)
SELECT elapsed_exec_time_ms
FROM TABLE(SNAPSHOT_APPL('SAMPLE',-1))
WHERE (SELECT agent_id FROM t1) = agent_id;
-- 回傳 77 ms
進階:同時量測應用端耗時與伺服器端耗時,剖析網路佔比:
Query elapsed time from application: 30 ms
Total query execution time on DB2 server: 22 ms
權限需求:執行快照函數需 SYSCTRL 或更高權限。
故意設置錯誤 currentSchema=FRED 觸發異常,捕獲 DB2Diagnosable 可見完整 SQLCA 結構:錯誤碼、錯誤訊息、失效物件引用 (FRED.STAFF) 等,等同嵌入式 C 時代的 SQLCA 視覺化。

CONCUR_UPDATABLE;3.0 標準化updateXXX(String columnName, xxx value) / updateXXX(int columnIndex, xxx value)updateRow() 持久化ResultSet rs = stmt.executeQuery("SELECT firstName, middleInitial, lastName FROM applicants");
while (rs.next()) {
rs.updateString(2, "S.");
rs.updateRow();
}
conn.setAutoCommit(false) 開啟手動事務控制Savepoint sp = conn.setSavepoint("SavePoint1") 設標記conn.rollback(sp) 回滾至標記,保留之前操作conn.setAutoCommit(false);
stmt.executeUpdate(sql1); stmt.executeUpdate(sql2);
Savepoint sp = conn.setSavepoint("SP1");
stmt.executeUpdate(sql3); stmt.executeUpdate(sql4);
conn.rollback(sp); // 僅保留 sql1+sql2
conn.commit();
conn.createStatement(ResultSet.HOLD_CURSORS_OVER_COMMIT)Universal JDBC Driver 是 DB2 家族戰略核心。本文涵蓋驅動選型、連接範本、Eclipse 整合、伺服器端計時 SQL、錯誤診斷、JDBC 3.0 三大新特性。完整範例碼、驅動文檔、Information Center 搜尋指南請參考原文 Resources 區。