更新時間:2021-02-23 17:15:53 來源:動力節(jié)點 瀏覽1798次
JDBC驅(qū)動程序?qū)嶋H上就是在JDBC API中實現(xiàn)定義的接口,用于與數(shù)據(jù)庫服務(wù)器進(jìn)行交互。例如,使用JDBC驅(qū)動程序,可以通過發(fā)送SQL或數(shù)據(jù)庫命令,然后使用Java接收結(jié)果來打開數(shù)據(jù)庫連接并與數(shù)據(jù)庫進(jìn)行交互。JDK附帶的Java.sql包包含各種類,其類的行為被定義,實現(xiàn)在第三方驅(qū)動程序中完成。 第三方供應(yīng)商在其數(shù)據(jù)庫驅(qū)動程序中實現(xiàn)java.sql.Driver接口。本文我們就來為大家介紹4種JDBC驅(qū)動程序。
1、JDBC-ODBC橋
這種類型的驅(qū)動把所有JDBC的調(diào)用傳遞給ODBC,再讓后者調(diào)用數(shù)據(jù)庫本地驅(qū)動代碼(也就是數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫操作二進(jìn)制代碼庫,例如Oracle中的oci.dll)。
當(dāng)Java第一次出現(xiàn)時,這是一個驅(qū)動程序,因為大多數(shù)數(shù)據(jù)庫僅支持ODBC訪問,但現(xiàn)在這種類型的驅(qū)動程序僅推薦用于實驗性使用或沒有其他替代方案時使用。
JDK 1.2附帶的JDBC-ODBC橋接是這種驅(qū)動程序的一個很好的例子。
2、本地API驅(qū)動
這種類型的驅(qū)動通過客戶端加載數(shù)據(jù)庫廠商提供的本地代碼庫(C/C++等)來訪問數(shù)據(jù)庫,而在驅(qū)動程序中則包含了Java代碼。這些驅(qū)動程序通常由數(shù)據(jù)庫供應(yīng)商提供,并以與JDBC-ODBC橋接相同的方式使用。 必須在每個客戶機上安裝供應(yīng)商特定的驅(qū)動程序。
如果要更改數(shù)據(jù)庫,則必須更改原生API,因為它特定于數(shù)據(jù)庫,并且現(xiàn)在大部分已經(jīng)過時,但是使用該類型驅(qū)動程序?qū)崿F(xiàn)了一些擴(kuò)展功能的開發(fā),它消除了ODBC的開銷。
Oracle調(diào)用接口(OCI)驅(qū)動程序是該類型驅(qū)動程序的示例。
3、網(wǎng)絡(luò)協(xié)議驅(qū)動
這種類型的驅(qū)動給客戶端提供了一個網(wǎng)絡(luò)API,客戶端上的JDBC驅(qū)動程序使用套接字(Socket)來調(diào)用服務(wù)器上的中間件程序,后者在將其請求轉(zhuǎn)化為所需的具體API調(diào)用。
在該驅(qū)動程序中,使用三層方法訪問數(shù)據(jù)庫。 JDBC客戶端使用標(biāo)準(zhǔn)網(wǎng)絡(luò)套接字與中間件應(yīng)用程序服務(wù)器進(jìn)行通信。套接字信息隨后由中間件應(yīng)用服務(wù)器轉(zhuǎn)換成DBMS所需的調(diào)用格式,并轉(zhuǎn)發(fā)到數(shù)據(jù)庫服務(wù)器。
這種驅(qū)動程序是非常靈活的,因為它不需要在客戶端上安裝代碼,一個驅(qū)動程序?qū)嶋H上可以提供多個數(shù)據(jù)庫的訪問。
可以將應(yīng)用程序服務(wù)器視為JDBC“代理”,它會調(diào)用客戶端應(yīng)用程序。 因此,我們需要了解應(yīng)用程序服務(wù)器的配置,才能有效地使用此驅(qū)動程序類型。
4、本地協(xié)議驅(qū)動
這種類型的驅(qū)動使用Socket,直接在客戶端和數(shù)據(jù)庫間通信。這是數(shù)據(jù)庫可用的最高性能驅(qū)動程序,通常由供應(yīng)商自己提供。
這種驅(qū)動是非常靈活的,不需要在客戶端或服務(wù)器上安裝特殊的軟件。 此外,這些驅(qū)動程序可以動態(tài)下載。
MySQL Connector/J驅(qū)動程序是本地協(xié)議驅(qū)動程序。由于其網(wǎng)絡(luò)協(xié)議的專有性質(zhì),數(shù)據(jù)庫供應(yīng)商通常提供該類型的驅(qū)動程序。
以上就是4種JDBC驅(qū)動程序,我們對每種驅(qū)動程序都給出了實際的例子,我們在實際學(xué)習(xí)應(yīng)用的過程中也可以找到實際的例子來借鑒。在本站的JDBC教程中,對JDBC的驅(qū)動程序有更加全面的介紹,幫助我們更加深入地了解JDBC的驅(qū)動程序。