Java資料庫連接
Java 資料庫連接,(Java Database Connectivity,簡稱JDBC)是 Java 語言中央用來規範客戶捀程式按怎來存取資料庫的應用程式介面,提供了諸如查詢佮更新的資料庫內底資料的方法。JDBC 嘛是啦 Sun Microsystems 的商標。JDBC 是面向關係型資料庫的。
佇咧 J 二 SE 中,提供一个稱為 JDBC-ODBC 橋(JDBC-ODBC Bridge)的 API。通過 ODBC,JDBC-ODBC 橋驅動程式會當存取所有支援 ODBC 的關係型資料庫。佮 JDBC API 無仝的是,這个驅動程式並毋是由著 Java 磅落來是由機器碼(machine code)編寫,並且毋是開放原始碼的。
驅動程式類型
JDBC 驅動程式共分四種類型:
類型一:JDBC-ODBC 橋
這種類型的驅動共所有的 JDBC 彼个呼叫傳遞予 ODBC,閣予後者呼叫資料庫本地驅動程式碼(也就是資料庫廠商提供的資料庫操作二進位程式碼庫,比如講 Oracle 中的 oci . dll)。
優點:
- 只要有對應的 ODBC 驅動(大部份的資料庫廠商攏會提供), 差不多會當存取所有的資料庫。
缺點:
- 執行效率較低,無適合大數據量存取的應用;
- 因為需要客戶捀預裝對應的 ODBC 驅動,無合 Internet / Intranet 應用。
類型二:在地 API 驅動
這種類型的驅動通過客戶捀載入資料庫廠商提供的本地程式碼庫(C/C + + 等)來存取資料庫,佇驅動程式內底包括矣 Java 程式碼。
優點:
- 速度強欲第一類驅動(毋過猶是比袂著第三、第四類驅動)。
缺點
- 因為需要客戶捀預裝對應的資料庫廠商程式碼庫,猶原無適合 Internet / Intranet 應用。
類型三:網路協定驅動
這種類型的驅動予客戶捀提供一个網路 API,客戶捀起來的 JDBC 驅動程式使用通訊端(Socket)來呼籲侍服器上的中介軟體程式,者咧共請求轉化做所需要的具體 API 搧叫。
優點:
- 無需要佇客戶捀載入資料庫廠商提供的程式碼庫,單位驅動的程式會當對濟資料庫來進行存取,可延伸性較好。
缺點:
- 佇中介軟體層猶原需對最終資料進行組態;
- 因為加出一个中介軟體層,速度不如第四類驅動程式。
類型四:本地協定驅動
這種類型的驅動使用 Socket,直接佇客戶捀佮資料庫通批。
優點:
- 存取速度上緊;
- 這是上直接、上蓋純粹的 Java 實現。
缺點:
- 會用得干焦資料庫廠商家己才會用得提供這種類型的 JDBC 驅動。
- 需要針對無仝的資料庫使用無仝的驅動程式。
API 概述
_ 參看 Java SE 以及 java . sql API _
JDBC API 主要是欲位於 JDK 中的 java . sql 包著(了後擴充的內容佇咧 javax . sql 包著), 主要包括講(斜體代表介面,需要趕動程式提供者來具體實現):
- DriverManager:負責載入各種無仝趕動的程式(Driver), 並無仝款的請求,向呼叫者返回相應的資料庫連接(Connection)。
- _ Driver _:驅動程式,會共自身載入到 DriverManager 中去,閣處理相應的請求並且倒轉去相應的資料庫連接(Connection)。
- _ Connection _:資料庫連接,負責進行佮資料庫間的通訊,SQL 執行以及事務處理攏是佇咧某一个特定 Connection 環境中進行的。會當產生用執行 SQL 的 Statement。
- _ Statement _:用以執行 SQL 查詢猶閣更新(針對靜態 SQL 語句佮單擺執行)。
- _ PreparedStatement _:用以執行包含動態參數的 SQL 查詢猶閣更新(咧侍服器捀編譯,允准重複執行以提高效率)。
- _ CallableStatement _:用呼叫資料庫內底的儲存程序。
- SQLException:代表佇資料庫連接的建立佮關係佮關係 SQL 語句的執行過程中發生了例外的情況(即錯誤)。
資料類型的對映
註:這款類型匹配毋是強制性標準,特定的 JDBC 廠商可能會改變這種類型匹配。比如講 Oracle 中的 DATE 類型是包括時分秒,而且 java . sql . Date 干焦支援年月日。
例
利用 Class . forName ( ) 方法來載入 JDBC 驅動程式(_ Driver _)至 DriverManager:
然後,對 DriverManager 中,通過 JDBC URL,使用者名稱,密碼來取相應的資料庫連接(_ Connection _):
無仝的 JDBC 驅動程式的 URL 是無仝款的,伊永遠以「jdbc:」 開始,毋過後壁的內容照驅動程式類型無仝而各異。佇咧揣 _ Connection _ 了後,就會當建立 _ Statement _ 用以執行 SQL 語句。下底是一个插入去(INSERT)的例:
查詢(SELECT)的結果囥佇結果集(_ ResultSet _)中,會當照順序依次存取:
猶毋過,通常,Java 程式設計師閣較傾向著使用 _ PreparedStatement _。下跤的例使用頂例中的 conn 東西:
抑若資料庫操作失敗,JDBC 將擲一个 SQLException。一般來講,這種類異常真少會當恢復,唯一會當做的就是盡量詳細的列印異常日記。推薦的做法是將 SQLException 翻譯成應用程式領域相關的異常(非強制處理異常)並且最後回滾的資料庫閣通知使用者。
一个資料庫的事務代碼如下:
參考文獻
外部連結
- Sun 提供的 JDBC 驅動程式佮其供應商列表
- Sun 提供的教程
- Sun Java 二一孵四 . 二 API
- 一个訂單系統的原形
- DBAccessor : JDBC 資料庫存取封裝類
- 開源的 JDBC 驅動程式列表
- http : / / blog . csdn . net / cho 三 en 一 / article / details / 五千兩百六十九鋪五千八百空八
參見
- 資料庫
- Java
- J 二 SE
- J 二 EE
- ODBC
- ADO
- ADO . NET