IBM DB2歷經多個版本迭代,JDBC驅動體系已形成Type 2、Type 3、Type 4三大類型(IBM未提供Type 1)。理解其架構差異、部署依賴與適用場景,是Java應用高效連接DB2的基石。
| 類型 | 別名 | 核心架構 | 驅動類名 | 依賴文件 | 典型場景 |
|---|---|---|---|---|---|
| Type 2 | Native-API驅動 | JDBC → JNI → DB2 Client CLI → Server | COM.ibm.db2.jdbc.app.DB2Driver |
db2java.zip + db2jcct2.dll (需安裝DB2 Client) |
本地開發、需Client端功能的舊應用 |
| Type 3 | Net/Applet驅動 | JDBC → DB2 JDBC Server (db2jd) → Server | COM.ibm.db2.jdbc.net.DB2Driver |
db2java.zip (需啟動db2jd服務,默認端口6789) |
Applet、無法安裝Client的受限環境 |
| Type 4 | Universal Driver (純Java) | JDBC → DRDA協議直連Server | com.ibm.db2.jcc.DB2Driver |
db2jcc.jar + db2jcc_license_cu.jar (免Client、跨平台) |
現代應用首選、雲原生、容器化部署 |
db2jcc.jar (Type 4),最小化部署複雜度,支援JDBC 4.x、SQLJ、XA事務、pureXML等新特性。Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
String url = "jdbc:db2://192.168.0.17:50000/SAMPLE";
Connection con = DriverManager.getConnection(url, "db2admin", "password");
con.setAutoCommit(false);
try (Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT empno, firstnme FROM employee")) {
while (rs.next()) {
System.out.println(rs.getString(1) + "," + rs.getString(2));
}
}
db2jcc_license_cisuz.jar,LUW需db2jcc_license_cu.jar。CATALOG TCPIP NODE ... / CATALOG DATABASE ... AT NODE ...)。db2java.zip與db2jcc.jar,避免ClassCastException。隨著DB2 9.7+全面推行Universal Driver (Type 4),建議新專案直接標準化於com.ibm.db2.jcc.DB2Driver,舊應用按計劃遷移。驅動選型不再是難題,關鍵在於統一標準、精簡依賴、匹配運行環境。