跳至內容

Java資料庫連接

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

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