
- JDBC 教程
- JDBC - 首頁
- JDBC - 簡介
- JDBC - SQL 語法
- JDBC - 環境
- JDBC - 示例程式碼
- JDBC - 驅動程式型別
- JDBC - 連線
- JDBC - 語句
- JDBC - 結果集
- JDBC - 資料型別
- JDBC - 事務
- JDBC - 異常
- JDBC - 批處理
- JDBC - 儲存過程
- JDBC - 流資料
- JDBC - RowSet
- JDBC - 複製資料庫
- JDBC - ACID 屬性
- JDBC - 連線池
- JDBC 示例
- JDBC - 建立資料庫
- JDBC - 選擇資料庫
- JDBC - 刪除資料庫
- JDBC - 建立表
- JDBC - 刪除表
- JDBC - 插入記錄
- JDBC - 選擇記錄
- JDBC - 更新記錄
- JDBC - 刪除記錄
- JDBC - WHERE 子句
- JDBC - LIKE 子句
- JDBC - 資料排序
- JDBC 有用資源
- JDBC - 問答
- JDBC - 快速指南
- JDBC - 有用資源
- JDBC - 討論
- 有用 - Java 教程
JDBC - 驅動程式型別
什麼是 JDBC 驅動程式?
JDBC 驅動程式實現了 JDBC API 中定義的介面,用於與資料庫伺服器互動。
例如,使用 JDBC 驅動程式可以開啟資料庫連線,並透過傳送 SQL 或資料庫命令與資料庫互動,然後接收 Java 的結果。
JDK 附帶的java.sql包包含各種類及其定義的行為,其實際實現是在第三方驅動程式中完成的。第三方供應商在其資料庫驅動程式中實現了java.sql.Driver介面。
JDBC 驅動程式型別
由於 Java 執行的各種作業系統和硬體平臺,JDBC 驅動程式的實現各不相同。Sun 將實現型別分為四類:型別 1、2、3 和 4,如下所述:
型別 1 - JDBC-ODBC 橋驅動程式
在型別 1 驅動程式中,JDBC 橋用於訪問安裝在每臺客戶端機器上的 ODBC 驅動程式。使用 ODBC 需要在系統上配置一個數據源名稱 (DSN),該名稱代表目標資料庫。
Java 最初發布時,這是一個有用的驅動程式,因為大多數資料庫只支援 ODBC 訪問,但現在這種型別的驅動程式僅推薦用於實驗用途或在沒有其他替代方案可用時使用。

JDK 1.2 附帶的 JDBC-ODBC 橋就是這種驅動程式的一個很好的例子。
型別 2 - JDBC-Native API
在型別 2 驅動程式中,JDBC API 呼叫被轉換為特定於資料庫的本機 C/C++ API 呼叫。這些驅動程式通常由資料庫供應商提供,並以與 JDBC-ODBC 橋相同的方式使用。必須在每臺客戶端機器上安裝供應商特定的驅動程式。
如果我們更改資料庫,則必須更改本機 API,因為它特定於資料庫,並且現在大多已過時,但是您可能會發現使用型別 2 驅動程式可以提高一些速度,因為它消除了 ODBC 的開銷。

Oracle 呼叫介面 (OCI) 驅動程式是型別 2 驅動程式的一個示例。
型別 3 - JDBC-Net 純 Java
在型別 3 驅動程式中,使用三層方法來訪問資料庫。JDBC 客戶端使用標準網路套接字與中介軟體應用程式伺服器通訊。然後,套接字資訊由中介軟體應用程式伺服器轉換為 DBMS 所需的呼叫格式,並轉發到資料庫伺服器。
這種型別的驅動程式非常靈活,因為它不需要在客戶端安裝任何程式碼,並且單個驅動程式實際上可以提供對多個數據庫的訪問。

您可以將應用程式伺服器視為 JDBC“代理”,這意味著它會為客戶端應用程式進行呼叫。因此,您需要了解應用程式伺服器的配置才能有效地使用此驅動程式型別。
您的應用程式伺服器可能使用型別 1、2 或 4 驅動程式與資料庫通訊,瞭解細微之處將非常有幫助。
型別 4 - 100% 純 Java
在型別 4 驅動程式中,基於純 Java 的驅動程式透過套接字連線直接與供應商的資料庫通訊。這是資料庫中最有效的驅動程式,通常由供應商自己提供。
這種型別的驅動程式非常靈活,您不需要在客戶端或伺服器上安裝特殊的軟體。此外,這些驅動程式可以動態下載。

MySQL 的 Connector/J 驅動程式是型別 4 驅動程式。由於其網路協議的專有性,資料庫供應商通常提供型別 4 驅動程式。
應該使用哪個驅動程式?
如果您正在訪問一種型別的資料庫,例如 Oracle、Sybase 或 IBM,則首選驅動程式型別為 4。
如果您的 Java 應用程式同時訪問多種型別的資料庫,則型別 3 是首選驅動程式。
在您的資料庫尚無型別 3 或型別 4 驅動程式的情況下,型別 2 驅動程式非常有用。
型別 1 驅動程式不被認為是部署級驅動程式,通常僅用於開發和測試目的。