Java 程式透過 JDBC 驅動程式與資料庫連接,JDBC 是用於執行 SQL 的 Java API,它將資料庫存取的 API 與 SQL 陳述分開,實現資料庫無關的 API 介面,藉由 JDBC 統一的介面,開發人員只要專注於 SQL 陳述,而可以不必理會底層的資料庫驅動程式與相關介面。
使用 JDBC,由廠商實作資料庫的介面,而 SQL 的操作部份由 Java 程式設計人員負責,如果要更換驅動程式,則只要載入新的驅動程式來源即可,Java 程式的部份則無需改變。
簡單的說,JDBC讓Java程式設計人員在撰寫資料庫程式的時候,可以「寫一個程式,適用所有的資料庫」。
下圖JDBC API、資料庫驅動程式與資料庫之間的關係:
JDBC資料庫驅動程式依實作方式可以分為四個類型:
Type 1 -> JDBC -ODBC Bridge
使用者的電腦上必須事先安裝好 ODBC 驅動程式,Type 1 驅動程式利用 Bridge 的方式將 JDBC 的呼叫方式轉換為 ODBC 的呼叫方式,用於 Microsoft Access 之類的資料庫存取:
Application <--> JDBC-ODBC Bridge <--> ODBC Driver <--> Database
Type 2 -> Native Bridge
驅動程式上層包裝 Java 程式以與 Java 應用程式作溝通,將 JDBC 呼叫轉為原生程式碼的呼叫,下層為原生語言(像是 C、C++)來與資料庫作溝通,下層的函式庫是針對特定資料庫設計的,不若 Type 1 可以對 ODBC 架構的資料庫作存取:
Application <--> Native-API Bridge <--> Native API <--> Database
Type 3 -> Middlewave(就算 DB 系統換掉,Java 程式都不變)
透過中介的伺服器或中間件來存取資料庫,客戶端驅動程式以特定於伺服器或中間件的網路協定,與伺服器或中間件進行溝通,而由中介伺服器或中間件來完成所有的資料庫存取動作,然後將結果傳回給驅動程式:
Application <--> JDBC-Net <--> middleware 或 server <--> Database
Type 4 -> Pure Java Driver(最常用的方法)
直接以資料庫的網路協定與資料庫作溝通,而不透過橋接、中介伺服器或中間件來存取資料庫:
Application <--> Native-Protocol <--> Database
Type 3與Type 4可以使用純Java撰寫,跨平台時是較建議採用的驅動程式。
MySQL的JDBC驅動程式屬於Type 4,稱之為Connector/J,目前有支援JDBC 2.0與JDBC 3.0的版本,您可以在以下的網站取得:
http://www.mysql.com/products/connector-j/index.html
在使用 JDBC 之前必須要有 jar 和說明書
以Eclipse 開發工具為例
要先加入外來(3rd party)類別庫(jar)
Project 按右鍵/Properties/Java Build Path/Libraries/Add Extended JARs
以 MySQL 為例,其步驟如下:
1.讀取驅動程式
2.取得與資料庫的連線(Connection)
3.產生指定物件(statement)
4.取得查詢結果
使用 JDBC,由廠商實作資料庫的介面,而 SQL 的操作部份由 Java 程式設計人員負責,如果要更換驅動程式,則只要載入新的驅動程式來源即可,Java 程式的部份則無需改變。
簡單的說,JDBC讓Java程式設計人員在撰寫資料庫程式的時候,可以「寫一個程式,適用所有的資料庫」。
下圖JDBC API、資料庫驅動程式與資料庫之間的關係:
JDBC資料庫驅動程式依實作方式可以分為四個類型:
Type 1 -> JDBC -ODBC Bridge
使用者的電腦上必須事先安裝好 ODBC 驅動程式,Type 1 驅動程式利用 Bridge 的方式將 JDBC 的呼叫方式轉換為 ODBC 的呼叫方式,用於 Microsoft Access 之類的資料庫存取:
Application <--> JDBC-ODBC Bridge <--> ODBC Driver <--> Database
Type 2 -> Native Bridge
驅動程式上層包裝 Java 程式以與 Java 應用程式作溝通,將 JDBC 呼叫轉為原生程式碼的呼叫,下層為原生語言(像是 C、C++)來與資料庫作溝通,下層的函式庫是針對特定資料庫設計的,不若 Type 1 可以對 ODBC 架構的資料庫作存取:
Application <--> Native-API Bridge <--> Native API <--> Database
Type 3 -> Middlewave(就算 DB 系統換掉,Java 程式都不變)
透過中介的伺服器或中間件來存取資料庫,客戶端驅動程式以特定於伺服器或中間件的網路協定,與伺服器或中間件進行溝通,而由中介伺服器或中間件來完成所有的資料庫存取動作,然後將結果傳回給驅動程式:
Application <--> JDBC-Net <--> middleware 或 server <--> Database
Type 4 -> Pure Java Driver(最常用的方法)
直接以資料庫的網路協定與資料庫作溝通,而不透過橋接、中介伺服器或中間件來存取資料庫:
Application <--> Native-Protocol <--> Database
Type 3與Type 4可以使用純Java撰寫,跨平台時是較建議採用的驅動程式。
MySQL的JDBC驅動程式屬於Type 4,稱之為Connector/J,目前有支援JDBC 2.0與JDBC 3.0的版本,您可以在以下的網站取得:
http://www.mysql.com/products/connector-j/index.html
在使用 JDBC 之前必須要有 jar 和說明書
以Eclipse 開發工具為例
要先加入外來(3rd party)類別庫(jar)
Project 按右鍵/Properties/Java Build Path/Libraries/Add Extended JARs
以 MySQL 為例,其步驟如下:
1.讀取驅動程式
class.forName("com.mysql.jdbc.Driver");
2.取得與資料庫的連線(Connection)
Connection conn = DriverManager.getConnection("jdbc:
mysql://140.137.202.11/company?user=db98
&password=98db");
3.產生指定物件(statement)
Statement stmt = conn.createStatement();
4.取得查詢結果
ResultSet rs = stmt.executeQuery("select *
from employees");
while(rs.next()){
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
System.out.println(rs.getInt(3));
System.out.println(rs.getInt(4));
}