Java與數據庫的連接_第1頁
Java與數據庫的連接_第2頁
Java與數據庫的連接_第3頁
Java與數據庫的連接_第4頁
Java與數據庫的連接_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2021-7-11 1 2021-7-11 第 2 頁 v深入了解深入了解JDBC訪問各種數據庫的驅動程序訪問各種數據庫的驅動程序 的模式的模式 v熟練掌握利用熟練掌握利用JDBC訪問數據庫的步驟訪問數據庫的步驟 v熟練掌握熟練掌握JDBC完成各種數據庫操作完成各種數據庫操作 v熟練掌握熟練掌握Java API來編寫數據庫應用程序來編寫數據庫應用程序 http:/ http:/ http:/ 本章學習要點本章學習要點 2021-7-11 3 2021-7-11 第 4 頁 10.1.1 JBDC的用途 v JDBC即即Java 數據庫連接數據庫連接 (Java Database Connect

2、ivity)。 vJDBC為數據庫及其工具開發人員提供了一個標準的為數據庫及其工具開發人員提供了一個標準的API,使,使 他們能夠用純他們能夠用純 Java API 來編寫數據庫應用程序。來編寫數據庫應用程序。 v在在JDK的早期版本中,的早期版本中,JDBC只是一個可選部件,到了只是一個可選部件,到了 JDK1.1公布時,公布時,SQL類包(也就是類包(也就是JDBC API)就成為)就成為Java 語言的標準部件。語言的標準部件。 vJDBC擴展了擴展了Java的功能。例如,使用的功能。例如,使用Java和和JDBC API可以可以 發布含有發布含有Applet的網頁,而該的網頁,而該Ap

3、plet的信息可能來自遠程數的信息可能來自遠程數 據庫。據庫。 v使用使用JDBC,使信息的管理和傳播變得容易和經濟。,使信息的管理和傳播變得容易和經濟。 2021-7-11 第 5 頁 10.1.2 從ODBC到JDBC v1. ODBC的結構模型的結構模型 ODBC的結構包括的結構包括4個主要部分:應用程序接口、驅動程序管個主要部分:應用程序接口、驅動程序管 理器、數據庫驅動程序和數據源。理器、數據庫驅動程序和數據源。 應用程序接口:屏蔽不同的應用程序接口:屏蔽不同的ODBC數據庫驅動程序之間函數數據庫驅動程序之間函數 調用的差別,為用戶提供統一的調用的差別,為用戶提供統一的SQL編程接口

4、。編程接口。 驅動程序管理器:為應用程序裝載數據庫驅動程序。驅動程序管理器:為應用程序裝載數據庫驅動程序。 數據庫驅動程序:實現數據庫驅動程序:實現ODBC的函數調用,提供對特定數據的函數調用,提供對特定數據 源的源的SQL請求。如果需要,數據庫驅動程序將修改應用程序請求。如果需要,數據庫驅動程序將修改應用程序 的請求,使得請求符合相關的的請求,使得請求符合相關的DBMS所支持的文法。所支持的文法。 數據源:由用戶想要存取的數據以及與它相關的操作系統、數據源:由用戶想要存取的數據以及與它相關的操作系統、 DBMS和用于訪問和用于訪問DBMS的網絡平臺組成。的網絡平臺組成。 2021-7-11

5、第 6 頁 10.1.2 從ODBC到JDBC v2. JDBC的誕生的誕生 vJava 剛誕生時,由于沒有一個剛誕生時,由于沒有一個Java語言的數據庫語言的數據庫API,編,編 程人員不得不在程人員不得不在Java程序中加入程序中加入C語言的語言的ODBC函數調用。函數調用。 這就使這就使Java的很多優秀特性無法充分發揮,如平臺無關性、的很多優秀特性無法充分發揮,如平臺無關性、 面向對象特性等。隨著面向對象特性等。隨著Java語言訪問數據庫的應用越來越多,語言訪問數據庫的應用越來越多, 對對Java語言訪問數據庫語言訪問數據庫API接口的要求也越來越強烈。接口的要求也越來越強烈。 v由于

6、由于ODBC有其不足之處,如它不容易使用、沒有面向對象有其不足之處,如它不容易使用、沒有面向對象 的特性等,因而的特性等,因而SUN公司開發了一套公司開發了一套Java語言的數據庫應用語言的數據庫應用 程序開發接口。在程序開發接口。在JDK的早期版本中,的早期版本中,JDBC只是一個可選只是一個可選 部件,到部件,到JDK 1.1公布時,公布時,SQL類包(即類包(即JDBC API)就成為)就成為 Java語言的標準部件。語言的標準部件。 2021-7-11 第 7 頁 10.1.3 JDBC的實現及其驅動程序 v1. 專用網絡協議的驅動程序與數據庫直接通信專用網絡協議的驅動程序與數據庫直接

7、通信 v這種實現方法是直接使用數據庫廠商提供的、用專用網絡這種實現方法是直接使用數據庫廠商提供的、用專用網絡 協議創建的驅動程序,通過它可以直接將協議創建的驅動程序,通過它可以直接將JDBC API調用轉調用轉 換為網絡調用,其結構如圖所示。換為網絡調用,其結構如圖所示。 v這種調用方式一般性能比較好,而且也是最簡單實用的方這種調用方式一般性能比較好,而且也是最簡單實用的方 法。因為它不需要安裝其他的庫程序或者中間件,幾乎所有法。因為它不需要安裝其他的庫程序或者中間件,幾乎所有 的數據庫廠商都為他們的數據庫提供了這種的數據庫廠商都為他們的數據庫提供了這種JDBC驅動程序,驅動程序, 也可以從第

8、三方廠商獲得這些驅動程序。也可以從第三方廠商獲得這些驅動程序。 v從網址從網址http:/ 以看到所有可用驅動程序的清單。以看到所有可用驅動程序的清單。 應用程序JDBC API驅動程序數據源 2021-7-11 第 8 頁 10.1.3 JDBC的實現及其驅動程序 v2. 通過通過JDBC-ODBC橋與橋與ODBC數據源通信數據源通信 v作為作為JDBC的一部分,的一部分,SUN公司還發行了一個用于訪問公司還發行了一個用于訪問ODBC數數 據源的驅動程序,稱為據源的驅動程序,稱為JDBC-ODBC橋接器。它是用橋接器。它是用 jdbcodbc.c1ass和一個用于訪問和一個用于訪問ODBC驅

9、動程序的本地庫來實現驅動程序的本地庫來實現 的。該本地庫是一個動態連接庫的。該本地庫是一個動態連接庫DLL(JDBCODBC.DLL)。)。 v這個驅動程序把這個驅動程序把JDBC的方法映射到的方法映射到ODBC調用上,這樣,調用上,這樣, JDBC就可以和任何可用的就可以和任何可用的ODBC驅動程序進行交互。它使驅動程序進行交互。它使 JDBC目前有能力訪問幾乎所有的數據庫。目前有能力訪問幾乎所有的數據庫。 應用程序 JDBC APIJDBC-ODBCODBC層ODBC API 數據源 2021-7-11 第 9 頁 10.1.3 JDBC的實現及其驅動程序 v3. 通過部分專用的驅動程序與

10、數據庫通信通過部分專用的驅動程序與數據庫通信 v這種方式的特點是將這種方式的特點是將JDBC數據庫調用直接翻譯為廠商專用數據庫調用直接翻譯為廠商專用 的的API,與上述的,與上述的JDBC-ODBC橋接器相比,它的執行更有橋接器相比,它的執行更有 效、更快捷,其模式如圖所示。效、更快捷,其模式如圖所示。 應用程序JDBC API驅動程序數據源專用API v4. 這種這種JDBC是純是純Java的,直接與數據庫實例交互。的,直接與數據庫實例交互。 Java API-JDBC-數據庫協議-數據庫 2021-7-11 10 2021-7-11 第 11 頁 10.3 JDBC API 10.3 JD

11、BC API介紹介紹 v JDBC API所有的類和接口都集中在所有的類和接口都集中在Java.sql和和 Javax.sql這兩個包中。這兩個包中。 v Java.sql 這個包中包含的類和接口采用的是傳統的這個包中包含的類和接口采用的是傳統的 C/S體系結構。它的功能主要針對的是基本數據庫編體系結構。它的功能主要針對的是基本數據庫編 程服務,如生成連接、執行語句以及準備語句和運程服務,如生成連接、執行語句以及準備語句和運 行批處理查詢等。也有一些其它的高級功能。行批處理查詢等。也有一些其它的高級功能。 vJavax.sql 它與它與Java.sql相比,引入了一些相比,引入了一些JDBC編

12、程編程 方面的主要的體系結構的改變,并且為連接管理、方面的主要的體系結構的改變,并且為連接管理、 分布式事務處理和連接提供了更好的抽象。同時,分布式事務處理和連接提供了更好的抽象。同時, 這個包還引入了容器管理的連接緩沖池、分布式事這個包還引入了容器管理的連接緩沖池、分布式事 務處理和行集(務處理和行集(row set)等機制。)等機制。 2021-7-11 第 12 頁 10.3 JDBC API10.3 JDBC API介紹介紹 v編寫簡單編寫簡單JDBC程序的基本步驟:程序的基本步驟: 2021-7-11 第 13 頁 10.3.1 10.3.1 連接管理連接管理 要編寫一個要編寫一個J

13、DBC程序,首先應該將它與數據庫進行連接。在程序,首先應該將它與數據庫進行連接。在 連接管理這一組中,主要有下面連接管理這一組中,主要有下面2個類和個類和2個接口。個接口。 java.sql.DriverManager 這個類提供了用于管理一個或多個數這個類提供了用于管理一個或多個數 據庫驅動程序。每個驅動程序都可以連接特定的數據庫。據庫驅動程序。每個驅動程序都可以連接特定的數據庫。 java.sql.DriverPropertyInfo 由于每個數據庫都需要一組屬性由于每個數據庫都需要一組屬性 以獲得一條連接,這個類可用于查找連接所需要的屬性。以獲得一條連接,這個類可用于查找連接所需要的屬性

14、。 java.sql.Driver 這是一個抽象了廠商專用連接協議的接口,可這是一個抽象了廠商專用連接協議的接口,可 從數據庫的生產廠商或第三方廠商獲得該接口的實現。從數據庫的生產廠商或第三方廠商獲得該接口的實現。 java.sql.Connection 這個接口抽象了大部分與數據庫的交互活這個接口抽象了大部分與數據庫的交互活 動。通過一條連接,可以向數據庫發送動。通過一條連接,可以向數據庫發送SQL語句以及讀取執語句以及讀取執 行的結果。行的結果。 2021-7-11 第 14 頁 10.3.2 數據庫訪問 當建立連接后,可以發送當建立連接后,可以發送SQL語句訪問數據庫和讀取訪問的語句訪問

15、數據庫和讀取訪問的 結果。結果。 java.sql.Statement 這個接口可在基層連接上執行這個接口可在基層連接上執行SQL語語 句并訪問返回結果。句并訪問返回結果。 java.sql.PreparedStatement 這是這是java.sql.Statement接接 口的一個變種,可以使用參數化口的一個變種,可以使用參數化SQL語句。語句。 java.sql.CallableStatement 這個接口可運行存儲過程。這個接口可運行存儲過程。 java.sql.ResultSet 這個接口抽象了運行這個接口抽象了運行SQL select語句的語句的 結果。它提供了訪問結果的方法。可以

16、使用這個接口來訪問結果。它提供了訪問結果的方法。可以使用這個接口來訪問 各記錄中不同的字段。各記錄中不同的字段。 2021-7-11 15 2021-7-11 第 16 頁 10.4.1 JDBC API10.4.1 JDBC API工具工具 v1. 注冊數據庫的驅動程序(注冊數據庫的驅動程序(driver) vDriverManager.registerDriver():該方法用于為:該方法用于為DriverManager 對象注冊特定的對象注冊特定的Driver對象。對象。DriverManager類的方法利用已注類的方法利用已注 冊的驅動器表,確定是否可以連接到某數據庫的冊的驅動器表,確

17、定是否可以連接到某數據庫的URL地址。地址。 vClass.forName:通過調用方法:通過調用方法 Class.forName顯式地加載驅動顯式地加載驅動 程序類。由于這個調用與外部設置無關,因此推薦使用這種加程序類。由于這個調用與外部設置無關,因此推薦使用這種加 載驅動程序的方法。以下代碼加載類載驅動程序的方法。以下代碼加載類 acme.db.Driver: Class.forName(acme.db.Driver); v加載驅動程序的第一種方法需要持久的預設環境。如果對這一加載驅動程序的第一種方法需要持久的預設環境。如果對這一 點不能保證,則調用方法點不能保證,則調用方法 Class.

18、forName 顯式地加載每個驅動顯式地加載每個驅動 程序就顯得更為安全。這也是引入特定驅動程序的方法。程序就顯得更為安全。這也是引入特定驅動程序的方法。 2021-7-11 第 17 頁 10.4.1 JDBC API10.4.1 JDBC API工具工具 v2. 建立數據庫連接的工具建立數據庫連接的工具 ( DriverManager .getConnection) vDriverManager實現了建立數據庫連接的3個 getConnection()方法。每個方法都返回一個 Connection對象,但它們接收的參數不同。 v getConnection(String url)方法只接收

19、數據庫URL作 為參數,用當前的Driver對象或已注冊的Driver對象 表中某個對象連接指定的數據庫。該方法中假定構 造數據庫連接時不需要用戶名、口令或其他數據庫 屬性。 2021-7-11 第 18 頁 10.4.1 JDBC API10.4.1 JDBC API工具工具 v getConnection(String url, Properties info)方法接收兩 個參數:數據庫的URL和連接數據庫所需各種屬性 的Properties對象。第二個參數必須是Properties對象, 它包含連接指定數據庫所需的所有屬性項。 v getConnection(String url, St

20、ring user, String password)方法接收3個參數,第一個是數據庫的 URL,第二個說明連接數據所用的用戶名;第三個 是DriverManager連接數據庫時所用的用戶口令。 2021-7-11 第 19 頁 10.4.1 JDBC API10.4.1 JDBC API工具工具 v3. Connection對象對象 vConnection對象是用于連接數據庫和Java應用程序的主要對 象。利用它可以創建所有的Statement對象,這些Statement對 象用于執行SQL語句,并從數據庫中讀取結果。Driver對象 的connect()方法和DrvierManager對象

21、的getConnection()方法 都可以創建應用程序中的Connection對象。 vConnection對象提供應用程序與數據庫的靜態連接。除非調 用Connection對象的close()方法,或者刪除Connection對象才 斷開數據庫連接,否則保持有效連接。如果數據庫限制連接 的數目,使用靜態連接過多就會存在一些問題。這時,最好 只在需要時才連接數據庫,并在操作完畢后斷開數據庫連接。 2021-7-11 第 20 頁 10.4.1 JDBC API10.4.1 JDBC API工具工具 v4. Statement對象對象 v連接數據庫后,要執行SQL語句,得到數據庫的返回結果,必

22、 須使用Statement對象。Statement對象與Connection對象一樣不 能直接創建,必須通過Connection對象的createStatement()方法 返回個Statement對象。 v利用Statement對象執行SQL查詢。靜態SQL語句的執行不需要 接收任何參數。而動態SQL語句只有得到指定數目的參數后才 是完整的SQL語句。靜態SQL可以是select語句、delete語句、 update語句、insert語句,甚至可以是存儲過程的調用語句。 update、delete和insert語句不返回任何結果,只修改數據庫中 的數據。select語句一般都要返回數據庫中的

23、數據。 vStatement對象的主要方法如表10.1所示。 2021-7-11 第 21 頁 10.4.2 10.4.2 連接數據庫連接數據庫 v介紹前兩種方法:一種是通過JDBC驅動程序,另一種是通 過JDBC-ODBC橋+ODBC驅動與數據庫進行連接。以下將用 兩個實例來詳細說明如何運用這兩種方法與數據庫通信。 v1. 使用使用JDBC驅動程序連接驅動程序連接PointBase數據庫數據庫 v下面這個例子是在Windows 操作系統下,使用PointBase提 供的JDBC驅動連接數據庫。 v【例10.2】 首先,安裝JDBC驅動程序,把含有驅動程序 的.zip或者.jar文件放到CLA

24、SSPATH下。 v然后,創建一個新的數據庫:運行PointBase,打開DBA菜 單,選擇CreateCreate New Database命令,如圖10.5所示, 把這個新建的數據庫取名為DoMiSo。 2021-7-11 第 22 頁 10.4.2 10.4.2 連接數據庫連接數據庫 2021-7-11 第 23 頁 10.4.2 10.4.2 連接數據庫連接數據庫 v準備工作已基本完成,運行下面的程序就可以與PointBase 下的DoMiSo數據庫進行連接了。 程序的代碼 2021-7-11 第 24 頁 10.4.2 10.4.2 連接數據庫連接數據庫 v2. JDBC-ODBC橋

25、橋+ODBC驅動連接驅動連接Access2000數據數據 庫庫 v在Java的開發工具包中一般都會自帶JDBC-ODBC橋。在這 個例子中,我們使用的操作系統是Windows XP,此系統下 Access的ODBC驅動已安裝配置完備。 v【例10.3】 首先,創建數據庫。運行Microsoft Access,創 建一個新的數據庫,取名為Connect。 v然后,創建數據源。打開控制面板,單擊“管理工 具”“數據源(ODBC)”圖標,打開“ODBC數據源管理 器”對話框,單擊“添加”按鈕后彈出“創建新數據源”對 話框,如圖所示。 2021-7-11 第 25 頁 10.4.2 10.4.2 連接

26、數據庫連接數據庫 v在圖中的在圖中的“名稱名稱”列表框中選擇列表框中選擇“Driver do Microsoft Access”選項,單擊選項,單擊“完成完成”后彈出對話框。后彈出對話框。 2021-7-11 第 26 頁 10.4.2 10.4.2 連接數據庫連接數據庫 v這個新的數據源命名為這個新的數據源命名為Connection,然后單擊,然后單擊“選擇選擇”按鈕,按鈕, 找到找到Connect.mdb,單擊,單擊“確定確定”按鈕,至此已成功地創建按鈕,至此已成功地創建 數據源。數據源。 程序代碼程序代碼 2021-7-11 第 27 頁 10.4.2 10.4.2 連接數據庫連接數據庫

27、 vConnectAccess連接數據源的執行結果連接數據源的執行結果 2021-7-11 第 28 頁 10.4.2 10.4.2 連接數據庫連接數據庫 v3. 動態選擇加載驅動程序的類型動態選擇加載驅動程序的類型 v以上所舉的兩個例子都是在程序代碼中預先指定了所要加以上所舉的兩個例子都是在程序代碼中預先指定了所要加 載的驅動程序以及要連接的數據庫等信息。實際上,可以載的驅動程序以及要連接的數據庫等信息。實際上,可以 嘗試一種更一般的形式,即不在程序中固定使用哪一種驅嘗試一種更一般的形式,即不在程序中固定使用哪一種驅 動程序,也不固定動程序,也不固定URL等,而是提供一個可視化的用戶界等,而

28、是提供一個可視化的用戶界 面,讓用戶通過選擇不同的面,讓用戶通過選擇不同的Driver和和URL來連接不同的數來連接不同的數 據庫。據庫。 v程序代碼程序代碼: 2021-7-11 第 29 頁 10.4.2 10.4.2 連接數據庫連接數據庫 v連接連接SQL Server數據庫的有關信息數據庫的有關信息 2021-7-11 第 30 頁 10.4.2 10.4.2 連接數據庫連接數據庫 v連接因特網上另一臺機器上的連接因特網上另一臺機器上的Oracle數據庫的結果數據庫的結果 2021-7-11 第 31 頁 10.5 10.5 小小 結結 vJDBC為在為在Java中開發數據庫應用提供了

29、一個良好的工具,中開發數據庫應用提供了一個良好的工具, 有了有了JDBC API,就不必為訪問每一種數據庫各寫一個程序,就不必為訪問每一種數據庫各寫一個程序, 也無須擔憂要為不同的平臺編寫不同的應用程序。也無須擔憂要為不同的平臺編寫不同的應用程序。 vJDBC也擴展了也擴展了Java的網絡功能。例如,使用的網絡功能。例如,使用Java的網絡功的網絡功 能,再加上能,再加上JDBC,無論何時何地都可能訪問遠程數據庫。,無論何時何地都可能訪問遠程數據庫。 vJDBC訪問數據庫的方式有多種,粗略劃分可分為兩類:利訪問數據庫的方式有多種,粗略劃分可分為兩類:利 用數據庫廠家的驅動程序和利用用數據庫廠家的驅動程序和利用ODBC;若利用前者,可到;若利用前者,可到 SUN公司的網站或數據庫廠商的網站上下載驅動程序,這些公司的網站或數據庫廠商的網站上下載驅動程序,這些 驅動程序已實現為驅動程序已實現為Java API訪問數據庫的協議的接口和抽象訪問數據庫的協議的接口和抽象 類;若利用后者,在類;若利用后者,在Windows平臺已安裝好了平臺已安裝好了ODBC組件,組件, 并提供了相應

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論