DB2 與 JDBC 支持
依照 JDBC 規(guī)范,有四種類型的 JDBC 驅(qū)動程序體系結(jié)構(gòu):
對于DB2 UDB V7.2來說,它不支持 Type 1 和 Type 4 的驅(qū)動程序,但是提供了分別支持 Type 2 和 Type 3 的驅(qū)動程序。
示例如下:
兩種驅(qū)動程序均隨產(chǎn)品安裝由 db2java.zip 提供。
這是一種 Type 2 的 JDBC 驅(qū)動程序,它通過 DB2 本地客戶機庫的幫助建立和 DB2本地數(shù)據(jù)庫或是遠程數(shù)據(jù)庫的連接(事先將遠程數(shù)據(jù)庫編目到本地)。因此,我們必須在應(yīng)用系統(tǒng)所在的機器上同時部署 DB2 本地客戶機庫,這也許是它最大的一個不足之處。
使用格式如下:
Driver Name:COM.ibm.db2.jdbc.app.DB2Driver
URL Pattern:jdbc:db2:databasename
databasename: 需要訪問的數(shù)據(jù)庫名
這是一種 Type 3 的 JDBC 驅(qū)動程序,它通過與一臺已經(jīng)部署了 DB2 本地客戶機庫的機器通信來建立和 DB2 遠程數(shù)據(jù)庫的連接。
使用格式如下:
Driver Name:COM.ibm.db2.jdbc.net.DB2Driver
URL Pattern:jdbc:db2:ServerIP:databasename
ServerIP: 需要訪問的數(shù)據(jù)庫所在機器IP地址
databasename: 需要訪問的數(shù)據(jù)庫名
(目標DB2系統(tǒng)偵聽該服務(wù)于默認端口6789,否則還需要在 URL Pattern 中指定目標端口號)
對于 DB2 UDB V8.1 來說,它仍然不支持 Type 1 的驅(qū)動程序。同時,它在 DB2 UDB V8.1的基礎(chǔ)上,新增加了對 Type 4 驅(qū)動程序的支持。
示例如下:
DB2 UDB V8.1 仍然支持上面所述 V7.2 支持的兩種驅(qū)動程序,隨產(chǎn)品安裝由 db2java.zip 提供,但具體實現(xiàn)上和 DB2 UDB V7.2 產(chǎn)品發(fā)布的包有所不同,所以可能存在下文所要進行實驗驗證的兼容性問題。
除了 COM.ibm.db2.jdbc.app.DB2Driver 之外,DB2 UDB V8.1 還提供了另外一種 Type 2 的驅(qū)動程序,隨產(chǎn)品安裝由 db2jcc.jar 提供。其實現(xiàn)包名是 com.ibm.db2.jcc.DB2Driver,在DB2 UDB V8.1 最初的實現(xiàn)中,此驅(qū)動程序只用于使用 Type 4 驅(qū)動程序體系結(jié)構(gòu)與 DB2 服務(wù)器進行直接的 JAVA 連接,這類驅(qū)動程序由于不需要另外部署 DB2 本地客戶機庫以及性能相對較好而收到開發(fā)人員的歡迎。自從 DB2 UDB V8.1.2(安裝了 FixPack 2)之后,開發(fā)人員還可以在 Type 2 體系結(jié)構(gòu)中使用該驅(qū)動程序,以提高本地應(yīng)用程序的性能。
這里,兩種驅(qū)動程序具有相同的實現(xiàn)類名稱,有兩種不同的方法可以區(qū)分 DB2 系統(tǒng)在內(nèi)部最終會實例化哪個驅(qū)動程序:
折騰了一天,原來是驅(qū)動的問題,郁悶
完整代碼:import java.sql.*;
public class Test{
public Test() {
}
public static void main(String[] args) {
try{
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
String url = "jdbc:db2://10.64.1.202:50000/QICC_DB";
String user = "wpl";
String password = "111";
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "select * from XZ_GDZC";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
}catch(Exception ex)
{
System.out.println(ex);
}
}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=110527