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