第一種:JDBC-ODBC    
     Jdbc-odbc橋是sun公司提供的,是jdk提供的的標準api。這種類型的驅動實際是把所有jdbc的調用傳遞給odbc,再由odbc調用本地數據庫驅動代碼。(本地數據庫驅動代碼是指由數據庫廠商提供的數據庫操作二進制代碼庫,例如在oracle for windows中就是oci dll文件)

只要本地機裝有相關的odbc驅動那麼採用jdbc-odbc橋幾乎可以訪問所有的數據庫,jdbc-odbc方法對於客户端已經具備odbc   driver的應用還是可行的。但是,由於jdbc-odbc先調用odbc再由odbc去調用本地數據庫接口訪問數據庫。所以,執行效率比較低,對於那些大數據量存取的應用是不適合的。而且,這種方法要求客户端必須安裝odbc   驅動,所以對於基於internet,intranet的應用也是不合適的。因為,你不可能要求所有客户都能找到odbc driver。
第二種:本地Api驅動     
    本地api驅動直接把jdbc調用轉變為數據庫的標準調用再去訪問數據庫。這種方法需要本地數據庫驅動代碼。
    這種驅動比起jdbc-odbc橋執行效率大大提高了。但是,它仍然需要在客户端加載數據庫廠商提供的代碼庫。這樣就不適合基於internet的應用,並且,他的執行效率比起3,4型的jdbc驅動還是不夠高。     
第三種:網絡協議驅動     
   這種驅動實際上是根據我們熟悉的三層結構建立的。jdbc先把對數局庫的訪問請求傳遞給網絡上的中間件服務器。中間件服務器再把請求翻譯為符合數據庫規範的調用,再把這種調用傳給數據庫服務器。如果中間件服務器也是用java開發的,那麼在在中間層也可以使用1,2型 jdbc驅動程序作為訪問數據庫的方法。
    由於這種驅動是基於server的所以,它不需要在客户端加載數據庫廠商提供的代碼庫。而且他在執行效率和可升級性方面是比較好的。因為大部分功能實現都在server端,所以這種驅動可以設計的很小,可以非常快速的加載到內存中。但是,這種驅動在中間件層仍然需要有配置其它數據庫驅動程序,並且由於多了一箇中間層傳遞數據,它的執行效率還不是最好。

第四種:本地協議驅動     
   這種驅動直接把jdbc調用轉換為符合相關數據庫系統規範的請求。由於4型驅動寫的應用可以直接和數據庫服務器通訊。這種類型的驅動完全由java實現,因此實現了平台獨立性。

由於這種驅動不需要先把jdbc的調用傳給odbc或本地數據庫接口或者是中間層服務器。所以它的執行效率是非常高的,而且,它根本不需要在客户端或服務器端裝載任何的軟件或驅動。這種驅動程序可以動態的被下載。但是對於不同的數據庫需要下載不同的驅動程序。

 

附:

JDBC(Java DataBase Connectivity)API是Java程序語言內的針對數據存取所設計的程序開發接口,主要是由一組Java語言編寫的"類"和"接口"所構成。
JDBC 3.0 API已完全包含在JDK 1.4版本中。
使用JDBC API存取特定數據庫系統前,必須擁有適當的JDBC驅動程序,可以在Sun網站查詢http://java.sun.com/products/jdbc/jdbc.drivers.html,
也可以在OTN網站下載最新的JDBC驅動程序http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html。
JDBC分為兩大部分,

一、開發接口,提供給程序開發人員必要的java"類"或"方法",開發接口包括下面兩個包java.sql和javax.sql
二、實現接口,定義JDBC的規格與需求,主要是由Sun公司提供給關係型數據庫系統廠商,各廠商可以遵循標準規格設計出最佳的JDBC驅動程序。
所以開發JDBC驅動程序的廠商是將各種API通過驅動程序的形式來實現;使用這些JDBC驅動程序的開發人員,則是利用API所提供的Java"類"與"方法"來開發數據庫應用程序。

 

ODBC與JDBC兩種驅動程序的差異
(1)ODBC是通過C語言接口,不適合java程序直接調用(ODBC的C語言API大量使用指針,易產生安全問題)
(2)可以將JDBC API想象成"高級的ODBC API面向對象版本"