天天看點

JDBC 基本概念了解

JDBC概念

每個資料庫産商有自己的資料庫驅動程式(資料庫廠商自己寫的代碼),提供和資料庫的互動。

資料庫驅動程式ó此資料庫的互動接口

現狀描述:

   1.    不同的資料庫,接口(資料庫驅動程式)不一樣。不同的驅動接口,就像是不同的OS有不同接口,JVM屏蔽了底層的差異。

   2.   必須有開發人員或"客戶"需要和資料庫驅動程式來互動 ,

問題:

   1.   不同的驅動程式,開發人員需要重複開發等等。

解決:

JDBC設有2中接口,一個是面向應用程式層,其作用是使得開發人員通過SQL調用資料庫和處理結果,而不需要考慮資料庫的提供商;另一個是驅動程式層,處理與具體驅動程式的互動,JDBC驅動程式可以利用JDBC API建立Java程式和資料源之間的橋梁。

(驅動程式:JDBC驅動程式A和資料庫廠商提供的驅動程式B)

Ps:A是和B互動的,B是和資料庫互動的

JDBC面向驅動程式層開發的人員,即對JDBC 應用層開發接口的實作,則不同的JDBC驅動有了相同的應用層接口,但底層驅動實作不同(因為需要調用不同資料庫産商的驅動,是以一定是不同的實作的)

但是:Sun提供了一個驅動管理器(DriverManager),資料庫供應商——如MySQL、Oracle,提供的驅動程式滿足驅動管理器的要求就可以被識别,就可以正常工作。是以JDBC不受資料庫供應商的限制。

ó sun 提供了統一的 DriverManager 類,資料庫廠商的驅動需要滿足驅動管理器的要求ó sun 對資料庫廠商的驅動進行了一定程度的規範

問題:

JDBC涉及到網絡的連接配接,事務的執行。

    開銷:每次連接配接都是JDBC驅動和資料庫驅動的互動,以及網絡的建立。

    事務的執行:事務即一系列的操作,(關系型資料庫)具有ACID特性

二、JDBC連接配接資料庫的流程及其原理

1、在開發環境中加載指定資料庫的驅動程式

2、在Java程式中加載驅動程式。

在Java程式中,可以通過 “Class.forName(“指定資料庫的驅動程式”)” 方式來加載添加到開發環境中的驅動程式,例如加載MySQL為: Class.forName(“com.mysql.jdbc.Driver”)

3、建立資料連接配接對象:通過DriverManager類建立資料庫連接配接對象Connection。

DriverManager類作用于Java程式和JDBC驅動程式之間,用于檢查所加載的驅動程式是否可以建立連接配接,然後通過它的getConnection方法,根據資料庫的URL、使用者名和密碼,建立一個JDBC Connection 對象。

如:Connection connection =  DriverManager.geiConnection(“連接配接資料庫的URL", "使用者名", "密碼”)。其中,URL=協定名+IP位址(域名)+端口+資料庫名稱;使用者名和密碼是指登入資料庫時所使用的使用者名和密碼。具體示例建立MySQL的資料庫連接配接代碼如下:

ó DriverManager 檢查加載的JDBC驅動是否符合規範。

ó根據資料庫的URL、使用者名和密碼,連接配接資料庫。Connection是TCP的連接配接,每次建立連接配接都需要資料庫的URL、使用者名和密碼,這些資訊相當于HTTP的參數,供資料庫驅動程式解析。

4、建立Statement對象:Statement 類的主要是用于執行靜态 SQL 語句并傳回它所生成結果的對象。通過Connection 對象的 createStatement()方法可以建立一個Statement對象。例如:Statement statament = connection.createStatement(); 具體示例建立Statement對象代碼如下: Statement statamentMySQL =connectMySQL.createStatement(); 

ó此時已經建立了Connection,TCP連接配接,Statement相當于是HTTP中的AJAX,隻不過不是異步的。這裡發送SQL參數等等,以及接受結果。

5、調用Statement對象的相關方法執行相對應的 SQL 語句

6、關閉資料庫連接配接: