JDBC(Java Database Connectivity,Java 資料庫連接)是一套用於執行 SQL 陳述式的 Java API。它由一組用 Java 程式語言撰寫的類別和介面組成,為工具開發者和資料庫開發者提供了一個標準化的 API,使他們能夠使用純 Java API 來編寫資料庫應用程式。
有了 JDBC,向各種關聯式資料庫發送 SQL 陳述式變得非常容易。開發者無需為了存取 Sybase、Oracle、Informix 等不同資料庫而編寫專門的程式。只需使用 JDBC API 撰寫一個程式,即可向相應資料庫發送 SQL 陳述式。結合 Java 「撰寫一次,到處執行」的特性,程式設計師只需編寫一次程式,即可在任何平台上運行。
Java 擁有健壯、安全、易用、易懂且可從網路上自動下載等特性,是編寫資料庫應用程式的絕佳語言。JDBC 正是連接 Java 應用程式與各種不同資料庫的關鍵機制,擴展了 Java 的功能範圍。
簡單來說,JDBC 可完成三件事:
以下程式碼片段展示了這三個步驟的基本範例:
Connection con = DriverManager.getConnection("jdbc:odbc:wombat", "login", "password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next())
System.out.println(rs.getString("a") + " " + rs.getString("b") + " " + rs.getString("c"));
JDBC 是一個「低階」介面,用於直接呼叫 SQL 命令。雖然功能強大且比其他資料庫連接 API 更易用,但它同時被設計為基礎介面,在其之上可以建構高階介面和工具。高階介面是「對使用者友善的」介面,使用更易理解、更方便的 API,在幕後轉換為 JDBC 這類低階介面。
目前基於 JDBC 正在開發的高階 API 包括:
Microsoft 的 ODBC(開放式資料庫連接)是目前使用最廣泛的關聯式資料庫程式設計介面。但 ODBC 使用 C 語言介面,從 Java 直接呼叫本地 C 程式碼在安全性、實現、健壯性和自動移植性方面都有缺點。
JDBC 可視為轉換為面向物件介面的 ODBC,保留了 ODBC 的基本設計特徵(兩者都基於 X/Open SQL CLI),但針對 Java 風格與優點進行優化,更加易於使用。JDBC 確保簡單功能的簡便性,同時在必要時允許使用高階功能。完全用 Java 撰寫的 JDBC 驅動程式可在所有 Java 平台上自動安裝、移植並保證安全性。
JDBC API 同時支援資料庫存取的兩層和三層模型:
Java applet 或應用程式直接與資料庫對話,需要 JDBC 驅動程式與特定資料庫管理系統通訊。這稱為客戶端/伺服器配置,網路可以是內部網或 Internet。
命令先發送到「中間層」,再由中間層發送 SQL 給資料庫。中間層可控制對公司資料的存取和更新類型,提供易用的高階 API,並在某些情況下提供效能優勢。隨著優化編譯器的引入,用 Java 實現中間層變得越來越實際,可充分利用 Java 的健壯、多執行緒和安全特性。
雖然大多數 DBMS 使用標準 SQL 基本功能,但高階功能的語法和語義往往不一致。JDBC 透過三種方式處理這個問題:
DatabaseMetaData 介面提供 DBMS 描述資訊,使應用程式能適應各 DBMS 的需求和功能「符合 JDBC 標準」代表用戶可依賴的 JDBC 功能標準等級,驅動程式至少必須支援 ANSI SQL-2 Entry Level,並通過 JavaSoft 提供的一致性測試。
JavaSoft 提供三個 JDBC 產品組件:JDBC 驅動程式管理器、JDBC 驅動程式測試套件、JDBC-ODBC 橋接器。JDBC 驅動程式目前分為四種類型:
預期第 3、4 類驅動程式將成為首選,第 1、2 類作為過渡方案。第 3、4 類提供 Java 的所有優點,包括自動安裝。