程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 如何才能對DB2驅動類型有更好的理解

如何才能對DB2驅動類型有更好的理解

編輯:DB2教程

以下的文章主要是介紹DB2驅動類型全面接觸,我們大家都知道IBM公司的數據庫產品線中不同版本所提供的相關數據訪問API,其可以說以是很多了,其中包括早期的基於CLI的驅動,最近的純Java的驅動,以及CLI和 Java的組合。

對於特定的DB2版本的驅動有特定的驅動也有通用的驅動,這是很明顯的.但是諸多版本的數據庫系統和諸多版本的訪問驅動,放在客戶面前,它們之間的關系顯得有些紛繁.

所以在使用IBM的數據庫產品時,頭腦中一定要注意版本對應和選擇適當的通用驅動.還好,IBM已經開始走向統一了,也開始注意易用性了,這些努力從DB2 UDB V7就開始了.從那時開始,按照Java領域JDBC驅動的類型劃分,IBM有了三類驅動了.

DB2的JDBC TYPE 2 驅動使 Java 應用程序通過JDBC調用DB2.對 DB2 JDBC type 2 driver 的調用被轉換成 Java 本地方法.Java 使用這種驅動程序的應用程序必須運行在一個 DB2 客戶機上,JDBC 請求通過這個客戶機轉到 DB2 服務器.

在使用 DB2 JDBC 應用程序驅動程序訪問 DB2 UDB for iSeries 數據源或者 DB2 for OS/390 或 z/OS 環境中的數據源之前,必須安裝 DB2 Connect Version 8.DB2 JDBC type 2 driver 支持 JDBC 1.2 規范中描述的大部分 JDBC 和 SQLJ 函數,並且支持 JDBC 2.0 規范中描述的一些函數.

DB2的JDBC TYPE 3 驅動,也被稱為applet 或net driver,它由一個JDBC 客戶機和一個JDBC 服務器(該進程的名字是db2jd)組成.既可以在Applet中使用也可以在應用程序中使用.

DB2的JDBC TYPE 4 驅動被稱為通用驅動,是純Java實現的,該驅動也支持SQLJ.

目前IBM一直都沒有提供 TYPE 1的JDBC驅動程序.

這些類型驅動程序所在的包是:db2jcc.jar 和 sqlj.zip 文件,sqllib\bin\db2jcct2.dll(該文件是 TYPE2所必需的).

使用

在使用 JDBC 連接 DB2 UDB V7.2 和 DB2 UDB V8.1 時,如果碰到一些令人費解的問題,可以檢查一下開發環境使用的JDK,在IBM提供的已知JDK中切換(目前有1.3和1.4版本),往往就能解決你的問題。

DB2 UDB V8.2個人版本中,下面的測試代碼測試了三種連接方式,並給出了結果:

  1. import java.sql.*;  
  2. public class Employee {  
  3. /* 
  4. * @param args  
  5. */  
  6. public static void main(String[] args) {  
  7. // TODO Auto-generated method stub  
  8. Employee ee = new Employee();  
  9. try {  

ee.testJcc();//成功

ee.testNet();//成功

ee.testApp();//失敗,原因是:類型2需要安裝DB2訪問客戶端,測試沒有安裝.如果要通過類型2訪問遠程數據庫,可以把遠程數據庫編目到本地後即可.

  1. } catch (Exception e) {  
  2. e.printStackTrace();  
  3. }  
  4. }  

內容導航

測試驅動體系結構為類型4驅動:com.ibm.db2.jcc.DB2Driver, 該驅動位於包db2jcc.jar中.

  1. @throws InstantiationException  
  2. @throws IllegalAccessException  
  3. @throws ClassNotFoundException  
  4. @throws SQLException  
  5. public void testJcc() throws InstantiationException,  
  6. IllegalAccessException, ClassNotFoundException, SQLException {  
  7. Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();  
  8. String url = "jdbc:db2://192.168.0.17:50000/SAMPLE";  
  9. Connection con = DriverManager.getConnection(url, "db2admin", "cherub");  
  10. con.setAutoCommit(false);  
  11. Statement stmt = con.createStatement();  
  12. ResultSet rs = stmt.executeQuery("select from Employee");  
  13. while (rs.next()) {  
  14. System.out.println(rs.getString(1) + "," + rs.getString(2));  
  15. }  
  16. }  

測試驅動體系結構為類型3驅動:COM.ibm.db2.jdbc.net.DB2Driver, 該驅動位於包 db2java.zip中.

  1. @throws InstantiationException  
  2. @throws IllegalAccessException  
  3. @throws ClassNotFoundException  
  4. @throws SQLException  
  5. public void testNet() throws InstantiationException,  
  6. IllegalAccessException, ClassNotFoundException, SQLException {  
  7. Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();  

// 目標DB2系統偵聽該服務於默認端口6789,否則還需要在 URL Pattern 中指定目標端口號

  1. String url = "jdbc:db2:192.168.0.17:SAMPLE";  
  2. Connection con = DriverManager.getConnection(url, "db2admin", "cherub");  
  3. con.setAutoCommit(false);  
  4. Statement stmt = con.createStatement();  
  5. ResultSet rs = stmt.executeQuery("select from Employee");  
  6. while (rs.next()) {  
  7. System.out.println(rs.getString(1) + "," + rs.getString(2));  
  8. }  
  9. }  

測試驅動體系結構為類型2驅動:COM.ibm.db2.jdbc.app.DB2Driver, 該驅動也位於包 db2java.zip中.

  1. @throws InstantiationException  
  2.  
  3. @throws IllegalAccessException  
  4.  
  5. @throws ClassNotFoundException  
  6.  
  7. @throws SQLException  
  8.  
  9. public void testApp() throws InstantiationException,  
  10. IllegalAccessException, ClassNotFoundException, SQLException {  
  11. Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();  
  12. String url = "jdbc:db2:sample";  
  13. Connection con = DriverManager.getConnection(url, "db2admin", "cherub");  
  14. con.setAutoCommit(false);  
  15. Statement stmt = con.createStatement();  
  16. ResultSet rs = stmt.executeQuery("select from Employee");  
  17. while (rs.next()) {  
  18. System.out.println(rs.getString(1) + "," + rs.getString(2));  
  19. }  
  20. }  
  21. }  

以上的相關內容就是對DB2驅動類型全面接觸的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved