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