Java連接DB2數(shù)據(jù)庫(kù)之實(shí)戰(zhàn)演示
此文章主要講述的是Java連接DB2數(shù)據(jù)庫(kù)的實(shí)際操作過程,如果你在實(shí)際操作中遇到Java連接DB2數(shù)據(jù)庫(kù)的實(shí)際操作過程,但是你卻不知道對(duì)其如何正確的解決,那么以下的文章對(duì)你而言一定是良師益友。
1. 關(guān)于Connection Pool
JDBC本身不提供連接池技術(shù),需要第三方庫(kù)的支持。
在需要頻繁獲得連接的Application中***用Connection Pool,如Web Application中
對(duì)于一般的Java Application則可以直接用JDBC連接連接DB2數(shù)據(jù)庫(kù)。
2. Java Application中連接DB2
安裝DB2 Personal Edition V9之后,在其中的java目錄可以找到這兩個(gè)文件:db2jcc.jar; db2jcc_license_cu.jar
db2jcc.jar中的com.ibm.db2.jcc.DB2Driver驅(qū)動(dòng)程序被稱為通用驅(qū)動(dòng),推薦使用(原因看第5點(diǎn))。在使用它時(shí),需要db2jcc_license_cu.jar,否則會(huì)提示沒有l(wèi)icense而無法工作。
DB2的連接地址:jdbc:db2://localhost:50000/Database
3. Web Application中連接DB2
一、以WAS為例,配置DB2 Data Source
1) 進(jìn)入控制臺(tái)
啟動(dòng)Websphere6.0服務(wù), 打開瀏覽器,在地址欄中輸入:http://localhost:9060/ibm/console/,登陸Websphere6.0管理控制臺(tái)
2) 設(shè)置環(huán)境變量
在導(dǎo)航欄左側(cè)選擇: Environment -> Websphere Variables, 找到DB2UNIVERSAL_JDBC_DRIVER_PATH, 輸入DB2數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包的位置,比如C:\Program Files\IBM\SQLLIB\java。確定,保存。
注意:通過管理工具訪問遠(yuǎn)程機(jī)器的時(shí)候,設(shè)置的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序jar包,須為應(yīng)用服務(wù)器所在機(jī)器的位置,而不是本機(jī)驅(qū)動(dòng)所在位置,否則服務(wù)將無法加載驅(qū)動(dòng)程序,測(cè)試數(shù)據(jù)源連接連接DB2數(shù)據(jù)庫(kù)將失敗。
3) 創(chuàng)建JDBC Provider
在導(dǎo)航欄左側(cè)選擇: Resources -> JDBC -> JDBC Providers。在右側(cè)點(diǎn)New. 設(shè)置Database type選擇DB2; Provider type 選擇 DB2 Universal JDBC Driver Provider; Implementation type 選擇 Connection pool data source(這里需要注意的是,非英文用戶可能會(huì)出錯(cuò),只需打開控制面板 -> 區(qū)域和語(yǔ)言選項(xiàng) -> 區(qū)域選項(xiàng) 中的 標(biāo)準(zhǔn)和格式選成英語(yǔ)(美國(guó))即可); Name可以隨意設(shè)置; 點(diǎn)擊Next; Next; Finish; Save。
4) 創(chuàng)建Data source
在導(dǎo)航欄左側(cè)選擇: Resources -> JDBC -> Data sources. 在右側(cè)點(diǎn)New. 設(shè)置Data source name; 設(shè)置JNDI name; Next; 選擇剛才新建的JDBC Provider; Next; Database name 設(shè)成你的數(shù)據(jù)庫(kù)名; Driver type 選 4; Server name 設(shè)成server的ip; Port 設(shè)為 50000; Next; Finish; Save.
5) 選擇剛創(chuàng)建的Data source, 在Related Items中配置JAAS, Alias設(shè)置別名; User ID和Password設(shè)為訪問DB2的用戶名和密碼; OK; Save.
6) 進(jìn)入之前的Data source, 在Component-managed authentication alias中選擇剛配置的JAAS; OK; Save.
7) 選中該Data source, 點(diǎn)Test connection 進(jìn)行測(cè)試.
二、在JEE項(xiàng)目中調(diào)用Data source
在JEE項(xiàng)目中需要在servlet中獲得Datasource,方法如下:
- public class DBConnector {
- public static Connection getConnection() throws SQLException, NamingException {
- Context ctx = new InitialContext();
- DataSource ds = (DataSource) ctx.lookup("jdbc/db2");
jdbc/db2為上面WAS中
- Connection conn = ds.getConnection();
- }
- }
在某個(gè)Servlet中的doPost或者doGet方法中調(diào)用DBConnector.getConnection()方法即可。
4. DB2的連接接口
DB2 提供了兩種API:JDBC 和 SQLJ。
SQLJ 是一個(gè)用于從 Java 應(yīng)用程序進(jìn)行數(shù)據(jù)訪問的標(biāo)準(zhǔn)開發(fā)模型。SQLJ API 是在 SQL 1999 規(guī)范中定義的。
JDBC 驅(qū)動(dòng)程序分為舊的CLI 驅(qū)動(dòng)程序和新的通用JDBC 驅(qū)動(dòng)程序(Universal JDBC Driver)。新的通用 JDBC 驅(qū)動(dòng)程序在一個(gè)實(shí)現(xiàn)中同時(shí)為 JDBC 和 SQLJ API 提供了支持。JDBC 和 SQLJ 可以在同一個(gè)應(yīng)用程序中互操作。
5. JDBC連接連接DB2數(shù)據(jù)庫(kù)方式及DB2驅(qū)動(dòng)的關(guān)系
JDBC 驅(qū)動(dòng)程序體系結(jié)構(gòu)分為四種類型,Type1,Type2,Type3,Type4。
JDBC Type 1 驅(qū)動(dòng)程序基于 JDBC-ODBC 橋。因此 ODBC 驅(qū)動(dòng)程序可以與此類 JDBC 驅(qū)動(dòng)程序(由 Sun 提供)結(jié)合起來使用。IBM 不支持 Type 1 驅(qū)動(dòng)程序,因此它不是推薦的環(huán)境。
JDBC Type 2 驅(qū)動(dòng)程序依靠特定于操作系統(tǒng)的庫(kù)(共享庫(kù))來與 RDBMS 通信。應(yīng)用程序?qū)⒀b入這種 JDBC 驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序?qū)⑹褂霉蚕韼?kù)來與 DB2 服務(wù)器通信。DB2提供了兩種不同的 Type 2 驅(qū)動(dòng)程序:
舊的CLI JDBC 驅(qū)動(dòng)程序 在文件 db2java.zip 中提供。其實(shí)現(xiàn)包名稱為 COM.ibm.db2.jdbc.app.DB2Driver 。其別名“app 驅(qū)動(dòng)程序”源自于一種觀念及其包名稱,這種觀念就是:此驅(qū)動(dòng)程序?qū)⑼ㄟ^遠(yuǎn)程數(shù)據(jù)庫(kù)的本地 DB2 UDB 客戶機(jī)執(zhí)行本地連接。
通用 JDBC 驅(qū)動(dòng)程序 在文件 db2jcc.jar 中提供。其實(shí)現(xiàn)包名稱為 com.ibm.db2.jcc.DB2Driver 。在最初的實(shí)現(xiàn)(V8.1)中,此驅(qū)動(dòng)程序用于使用 Type 4 驅(qū)動(dòng)程序體系結(jié)構(gòu)與 DB2 服務(wù)器進(jìn)行直接的 Java 連接。
在 Type 2 體系結(jié)構(gòu)中使用此驅(qū)動(dòng)程序的一個(gè)主要原因是為了本地應(yīng)用程序性能和分布式事務(wù)支持。通用 JDBC Type 2 驅(qū)動(dòng)程序分別使用 com.ibm.db2.jcc.DB2XADataSource 和 com.ibm.db2.jcc.DB2ConnectionPoolDataSource 來支持分布式事務(wù)和連接池。
JDBC Type 3 驅(qū)動(dòng)程序是一種純 Java 實(shí)現(xiàn),它必須與 DB2 JDBC Applet 服務(wù)器(DB2 JDBC Applet Server)通信才能訪問 DB2 數(shù)據(jù)。此類驅(qū)動(dòng)程序旨在使 Java applet 能訪問 DB2 數(shù)據(jù)源。
JDBC Type 3 驅(qū)動(dòng)程序常被稱作“網(wǎng)絡(luò)(net)驅(qū)動(dòng)程序”,它是根據(jù)其包名 COM.ibm.db2.jdbc.net 命名的。Type 3 驅(qū)動(dòng)程序要求 db2java.zip 驅(qū)動(dòng)程序總是處于與 DB2 Applet 服務(wù)器相同的維護(hù)級(jí)別。如果驅(qū)動(dòng)程序在 applet 內(nèi)使用,這就不是一個(gè)問題,因?yàn)闉g覽器會(huì)在應(yīng)用程序執(zhí)行期間下載相應(yīng)的 db2java.zip 文件。
許多客戶使用 Type 3 驅(qū)動(dòng)程序而不是 Type 2 驅(qū)動(dòng)程序,以避免必需的 DB2 客戶機(jī)安裝和必需的 DB2 CATALOG DATABASE 命令,后者用于創(chuàng)建使用舊的CLI 驅(qū)動(dòng)程序進(jìn)行 Type 2 連接所必需的數(shù)據(jù)庫(kù)目錄信息。目前,WebSphere Application Server 和其它 J2EE 服務(wù)器不支持 IBM Type 3 驅(qū)動(dòng)程序,因?yàn)樵擈?qū)動(dòng)程序不支持分布式事務(wù)(JTA)。
Type 4 驅(qū)動(dòng)程序是僅用于 Java 的 JDBC 驅(qū)動(dòng)程序,它直接連接連接DB2數(shù)據(jù)庫(kù)到數(shù)據(jù)庫(kù)服務(wù)器。DB2 V8.1 引入了稱為“通用 JDBC 驅(qū)動(dòng)程序(Universal JDBC driver)”的 Type 4 驅(qū)動(dòng)程序。通用 JDBC 驅(qū)動(dòng)程序在文件 db2jcc.jar 中提供。其實(shí)現(xiàn)包名為 com.ibm.db2.jcc.DB2Driver 。
請(qǐng)注意,通用 Type 2 和通用 Type 4 驅(qū)動(dòng)程序具有相同的實(shí)現(xiàn)類名稱。有兩種方法可以區(qū)別 DB2 在內(nèi)部將實(shí)例化哪個(gè)驅(qū)動(dòng)程序:
使用不同的連接URL模式來指示您想要Type 2和Type 4行為中的哪一種。
Type 4 URL 模式的示例:字符串“jdbc:db2://server1:50000/sample”。要求 JDBC 驅(qū)動(dòng)程序?qū)?Java 應(yīng)用程序直接連接到 DB2 服務(wù)器上名為“sample”的數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)位于配置在 DB2 服務(wù)器(主機(jī)名為 server1)上的 DB2 實(shí)例中,而 DB2 服務(wù)器則在端口 50000 上進(jìn)行偵聽。
Type 2 URL 模式的示例:字符串“ jdbc:db2:sample ”。
重要:就 DB2 UDB V8.1.2 而言,通用 JDBC 驅(qū)動(dòng)程序要求 CLASSPATH 中有許可證 JAR 文件和 db2jcc.jar 文件。以下是所需的許可證 JAR 文件:
對(duì)于 Cloudscape™ Network Server V5.1: db2jcc_license_c.jar
對(duì)于 DB2 UDB V8 for Linux, UNIX 和 Windows 服務(wù)器: db2jcc_license_su.jar
對(duì)于 DB2 UDB for iSeries® and z/OS 服務(wù)器(與 DB2 Connect 和 DB2 Enterprise Server Edition 一起提供): db2jcc_license_cisuz.jar
6. 更多內(nèi)容
參見:http://blog.csdn.net/peart_boy/archive/2006/10/16/1336201.aspx
【編輯推薦】