Java與數(shù)據(jù)庫(kù)的連接_第1頁(yè)
Java與數(shù)據(jù)庫(kù)的連接_第2頁(yè)
Java與數(shù)據(jù)庫(kù)的連接_第3頁(yè)
Java與數(shù)據(jù)庫(kù)的連接_第4頁(yè)
Java與數(shù)據(jù)庫(kù)的連接_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2021-11-16 8:5312021-11-16 8:53第 2 頁(yè)v深入了解深入了解JDBC訪問(wèn)各種數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序訪問(wèn)各種數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序的模式的模式v熟練掌握利用熟練掌握利用JDBC訪問(wèn)數(shù)據(jù)庫(kù)的步驟訪問(wèn)數(shù)據(jù)庫(kù)的步驟v熟練掌握熟練掌握J(rèn)DBC完成各種數(shù)據(jù)庫(kù)操作完成各種數(shù)據(jù)庫(kù)操作v熟練掌握熟練掌握J(rèn)ava API來(lái)編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序來(lái)編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序http:/ 本章學(xué)習(xí)要點(diǎn)本章學(xué)習(xí)要點(diǎn)2021-11-16 8:5332021-11-16 8:53第 4 頁(yè)10.1.1 JBDC的用途v JDBC即即Java 數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)連接 (Java Database Connectivity

2、)。 vJDBC為數(shù)據(jù)庫(kù)及其工具開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的為數(shù)據(jù)庫(kù)及其工具開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,使,使他們能夠用純他們能夠用純 Java API 來(lái)編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。來(lái)編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。 v在在JDK的早期版本中,的早期版本中,JDBC只是一個(gè)可選部件,到了只是一個(gè)可選部件,到了JDK1.1公布時(shí),公布時(shí),SQL類包(也就是類包(也就是JDBC API)就成為)就成為Java語(yǔ)言的標(biāo)準(zhǔn)部件。語(yǔ)言的標(biāo)準(zhǔn)部件。 vJDBC擴(kuò)展了擴(kuò)展了Java的功能。例如,使用的功能。例如,使用Java和和JDBC API可以可以發(fā)布含有發(fā)布含有Applet的網(wǎng)頁(yè),而該的網(wǎng)頁(yè),而該Applet的信息可能

3、來(lái)自遠(yuǎn)程數(shù)的信息可能來(lái)自遠(yuǎn)程數(shù)據(jù)庫(kù)。據(jù)庫(kù)。v使用使用JDBC,使信息的管理和傳播變得容易和經(jīng)濟(jì)。,使信息的管理和傳播變得容易和經(jīng)濟(jì)。 2021-11-16 8:53第 5 頁(yè)10.1.2 從ODBC到JDBCv1. ODBC的結(jié)構(gòu)模型的結(jié)構(gòu)模型 ODBC的結(jié)構(gòu)包括的結(jié)構(gòu)包括4個(gè)主要部分:應(yīng)用程序接口、驅(qū)動(dòng)程序管個(gè)主要部分:應(yīng)用程序接口、驅(qū)動(dòng)程序管理器、數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序和數(shù)據(jù)源。理器、數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序和數(shù)據(jù)源。 應(yīng)用程序接口:屏蔽不同的應(yīng)用程序接口:屏蔽不同的ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序之間函數(shù)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序之間函數(shù)調(diào)用的差別,為用戶提供統(tǒng)一的調(diào)用的差別,為用戶提供統(tǒng)一的SQL編程接口。編程接口。 驅(qū)動(dòng)程

4、序管理器:為應(yīng)用程序裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。驅(qū)動(dòng)程序管理器:為應(yīng)用程序裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。 數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序:實(shí)現(xiàn)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序:實(shí)現(xiàn)ODBC的函數(shù)調(diào)用,提供對(duì)特定數(shù)據(jù)的函數(shù)調(diào)用,提供對(duì)特定數(shù)據(jù)源的源的SQL請(qǐng)求。如果需要,數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序?qū)⑿薷膽?yīng)用程序請(qǐng)求。如果需要,數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序?qū)⑿薷膽?yīng)用程序的請(qǐng)求,使得請(qǐng)求符合相關(guān)的的請(qǐng)求,使得請(qǐng)求符合相關(guān)的DBMS所支持的文法。所支持的文法。數(shù)據(jù)源:由用戶想要存取的數(shù)據(jù)以及與它相關(guān)的操作系統(tǒng)、數(shù)據(jù)源:由用戶想要存取的數(shù)據(jù)以及與它相關(guān)的操作系統(tǒng)、DBMS和用于訪問(wèn)和用于訪問(wèn)DBMS的網(wǎng)絡(luò)平臺(tái)組成。的網(wǎng)絡(luò)平臺(tái)組成。 2021-11-16 8:53第 6 頁(yè)10.1

5、.2 從ODBC到JDBCv2. JDBC的誕生的誕生vJava 剛誕生時(shí),由于沒(méi)有一個(gè)剛誕生時(shí),由于沒(méi)有一個(gè)Java語(yǔ)言的數(shù)據(jù)庫(kù)語(yǔ)言的數(shù)據(jù)庫(kù)API,編,編程人員不得不在程人員不得不在Java程序中加入程序中加入C語(yǔ)言的語(yǔ)言的ODBC函數(shù)調(diào)用。函數(shù)調(diào)用。這就使這就使Java的很多優(yōu)秀特性無(wú)法充分發(fā)揮,如平臺(tái)無(wú)關(guān)性、的很多優(yōu)秀特性無(wú)法充分發(fā)揮,如平臺(tái)無(wú)關(guān)性、面向?qū)ο筇匦缘?。隨著面向?qū)ο筇匦缘?。隨著Java語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用越來(lái)越多,語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用越來(lái)越多,對(duì)對(duì)Java語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)API接口的要求也越來(lái)越強(qiáng)烈。接口的要求也越來(lái)越強(qiáng)烈。v由于由于ODBC有其不足之處,如它不容

6、易使用、沒(méi)有面向?qū)ο笥衅洳蛔阒?,如它不容易使用、沒(méi)有面向?qū)ο蟮奶匦缘?,因而的特性等,因而SUN公司開(kāi)發(fā)了一套公司開(kāi)發(fā)了一套Java語(yǔ)言的數(shù)據(jù)庫(kù)應(yīng)用語(yǔ)言的數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)接口。在程序開(kāi)發(fā)接口。在JDK的早期版本中,的早期版本中,JDBC只是一個(gè)可選只是一個(gè)可選部件,到部件,到JDK 1.1公布時(shí),公布時(shí),SQL類包(即類包(即JDBC API)就成為)就成為Java語(yǔ)言的標(biāo)準(zhǔn)部件。語(yǔ)言的標(biāo)準(zhǔn)部件。2021-11-16 8:53第 7 頁(yè)10.1.3 JDBC的實(shí)現(xiàn)及其驅(qū)動(dòng)程序v1. 專用網(wǎng)絡(luò)協(xié)議的驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)直接通信專用網(wǎng)絡(luò)協(xié)議的驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)直接通信v這種實(shí)現(xiàn)方法是直接使用數(shù)據(jù)庫(kù)廠商

7、提供的、用專用網(wǎng)絡(luò)這種實(shí)現(xiàn)方法是直接使用數(shù)據(jù)庫(kù)廠商提供的、用專用網(wǎng)絡(luò)協(xié)議創(chuàng)建的驅(qū)動(dòng)程序,通過(guò)它可以直接將協(xié)議創(chuàng)建的驅(qū)動(dòng)程序,通過(guò)它可以直接將JDBC API調(diào)用轉(zhuǎn)調(diào)用轉(zhuǎn)換為網(wǎng)絡(luò)調(diào)用,其結(jié)構(gòu)如圖所示。換為網(wǎng)絡(luò)調(diào)用,其結(jié)構(gòu)如圖所示。v這種調(diào)用方式一般性能比較好,而且也是最簡(jiǎn)單實(shí)用的方這種調(diào)用方式一般性能比較好,而且也是最簡(jiǎn)單實(shí)用的方法。因?yàn)樗恍枰惭b其他的庫(kù)程序或者中間件,幾乎所有法。因?yàn)樗恍枰惭b其他的庫(kù)程序或者中間件,幾乎所有的數(shù)據(jù)庫(kù)廠商都為他們的數(shù)據(jù)庫(kù)提供了這種的數(shù)據(jù)庫(kù)廠商都為他們的數(shù)據(jù)庫(kù)提供了這種JDBC驅(qū)動(dòng)程序,驅(qū)動(dòng)程序,也可以從第三方廠商獲得這些驅(qū)動(dòng)程序。也可以從第三方廠商獲得這些

8、驅(qū)動(dòng)程序。v從網(wǎng)址從網(wǎng)址http:/ API驅(qū)動(dòng)程序數(shù)據(jù)源2021-11-16 8:53第 8 頁(yè)10.1.3 JDBC的實(shí)現(xiàn)及其驅(qū)動(dòng)程序v2. 通過(guò)通過(guò)JDBC-ODBC橋與橋與ODBC數(shù)據(jù)源通信數(shù)據(jù)源通信v作為作為JDBC的一部分,的一部分,SUN公司還發(fā)行了一個(gè)用于訪問(wèn)公司還發(fā)行了一個(gè)用于訪問(wèn)ODBC數(shù)數(shù)據(jù)源的驅(qū)動(dòng)程序,稱為據(jù)源的驅(qū)動(dòng)程序,稱為JDBC-ODBC橋接器。它是用橋接器。它是用jdbcodbc.c1ass和一個(gè)用于訪問(wèn)和一個(gè)用于訪問(wèn)ODBC驅(qū)動(dòng)程序的本地庫(kù)來(lái)實(shí)現(xiàn)驅(qū)動(dòng)程序的本地庫(kù)來(lái)實(shí)現(xiàn)的。該本地庫(kù)是一個(gè)動(dòng)態(tài)連接庫(kù)的。該本地庫(kù)是一個(gè)動(dòng)態(tài)連接庫(kù)DLL(JDBCODBC.DLL)。)

9、。v這個(gè)驅(qū)動(dòng)程序把這個(gè)驅(qū)動(dòng)程序把JDBC的方法映射到的方法映射到ODBC調(diào)用上,這樣,調(diào)用上,這樣,JDBC就可以和任何可用的就可以和任何可用的ODBC驅(qū)動(dòng)程序進(jìn)行交互。它使驅(qū)動(dòng)程序進(jìn)行交互。它使JDBC目前有能力訪問(wèn)幾乎所有的數(shù)據(jù)庫(kù)。目前有能力訪問(wèn)幾乎所有的數(shù)據(jù)庫(kù)。應(yīng)用程序JDBC APIJDBC-ODBCODBC層ODBC API數(shù)據(jù)源2021-11-16 8:53第 9 頁(yè)10.1.3 JDBC的實(shí)現(xiàn)及其驅(qū)動(dòng)程序v3. 通過(guò)部分專用的驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)通信通過(guò)部分專用的驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)通信v這種方式的特點(diǎn)是將這種方式的特點(diǎn)是將JDBC數(shù)據(jù)庫(kù)調(diào)用直接翻譯為廠商專用數(shù)據(jù)庫(kù)調(diào)用直接翻譯為廠商專用

10、的的API,與上述的,與上述的JDBC-ODBC橋接器相比,它的執(zhí)行更有橋接器相比,它的執(zhí)行更有效、更快捷,其模式如圖所示。效、更快捷,其模式如圖所示。應(yīng)用程序JDBC API驅(qū)動(dòng)程序數(shù)據(jù)源專用APIv4. 這種這種JDBC是純是純Java的,直接與數(shù)據(jù)庫(kù)實(shí)例交互。的,直接與數(shù)據(jù)庫(kù)實(shí)例交互。Java API-JDBC-數(shù)據(jù)庫(kù)協(xié)議-數(shù)據(jù)庫(kù)2021-11-16 8:53102021-11-16 8:53第 11 頁(yè) 10.3 JDBC API 10.3 JDBC API介紹介紹 v JDBC API所有的類和接口都集中在所有的類和接口都集中在Java.sql和和Javax.sql這兩個(gè)包中。這兩個(gè)

11、包中。v Java.sql 這個(gè)包中包含的類和接口采用的是傳統(tǒng)的這個(gè)包中包含的類和接口采用的是傳統(tǒng)的C/S體系結(jié)構(gòu)。它的功能主要針對(duì)的是基本數(shù)據(jù)庫(kù)編體系結(jié)構(gòu)。它的功能主要針對(duì)的是基本數(shù)據(jù)庫(kù)編程服務(wù),如生成連接、執(zhí)行語(yǔ)句以及準(zhǔn)備語(yǔ)句和運(yùn)程服務(wù),如生成連接、執(zhí)行語(yǔ)句以及準(zhǔn)備語(yǔ)句和運(yùn)行批處理查詢等。也有一些其它的高級(jí)功能。行批處理查詢等。也有一些其它的高級(jí)功能。vJavax.sql 它與它與Java.sql相比,引入了一些相比,引入了一些JDBC編程編程方面的主要的體系結(jié)構(gòu)的改變,并且為連接管理、方面的主要的體系結(jié)構(gòu)的改變,并且為連接管理、分布式事務(wù)處理和連接提供了更好的抽象。同時(shí),分布式事務(wù)處理和

12、連接提供了更好的抽象。同時(shí),這個(gè)包還引入了容器管理的連接緩沖池、分布式事這個(gè)包還引入了容器管理的連接緩沖池、分布式事務(wù)處理和行集(務(wù)處理和行集(row set)等機(jī)制。)等機(jī)制。2021-11-16 8:53第 12 頁(yè)10.3 JDBC API10.3 JDBC API介紹介紹v編寫(xiě)簡(jiǎn)單編寫(xiě)簡(jiǎn)單JDBC程序的基本步驟:程序的基本步驟:2021-11-16 8:53第 13 頁(yè)10.3.1 10.3.1 連接管理連接管理要編寫(xiě)一個(gè)要編寫(xiě)一個(gè)JDBC程序,首先應(yīng)該將它與數(shù)據(jù)庫(kù)進(jìn)行連接。在程序,首先應(yīng)該將它與數(shù)據(jù)庫(kù)進(jìn)行連接。在連接管理這一組中,主要有下面連接管理這一組中,主要有下面2個(gè)類和個(gè)類和2

13、個(gè)接口。個(gè)接口。 java.sql.DriverManager 這個(gè)類提供了用于管理一個(gè)或多個(gè)數(shù)這個(gè)類提供了用于管理一個(gè)或多個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。每個(gè)驅(qū)動(dòng)程序都可以連接特定的數(shù)據(jù)庫(kù)。據(jù)庫(kù)驅(qū)動(dòng)程序。每個(gè)驅(qū)動(dòng)程序都可以連接特定的數(shù)據(jù)庫(kù)。 java.sql.DriverPropertyInfo 由于每個(gè)數(shù)據(jù)庫(kù)都需要一組屬性由于每個(gè)數(shù)據(jù)庫(kù)都需要一組屬性以獲得一條連接,這個(gè)類可用于查找連接所需要的屬性。以獲得一條連接,這個(gè)類可用于查找連接所需要的屬性。 java.sql.Driver 這是一個(gè)抽象了廠商專用連接協(xié)議的接口,可這是一個(gè)抽象了廠商專用連接協(xié)議的接口,可從數(shù)據(jù)庫(kù)的生產(chǎn)廠商或第三方廠商獲得該接口的實(shí)

14、現(xiàn)。從數(shù)據(jù)庫(kù)的生產(chǎn)廠商或第三方廠商獲得該接口的實(shí)現(xiàn)。 java.sql.Connection 這個(gè)接口抽象了大部分與數(shù)據(jù)庫(kù)的交互活這個(gè)接口抽象了大部分與數(shù)據(jù)庫(kù)的交互活動(dòng)。通過(guò)一條連接,可以向數(shù)據(jù)庫(kù)發(fā)送動(dòng)。通過(guò)一條連接,可以向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句以及讀取執(zhí)語(yǔ)句以及讀取執(zhí)行的結(jié)果。行的結(jié)果。2021-11-16 8:53第 14 頁(yè)10.3.2 數(shù)據(jù)庫(kù)訪問(wèn)當(dāng)建立連接后,可以發(fā)送當(dāng)建立連接后,可以發(fā)送SQL語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù)和讀取訪問(wèn)的語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù)和讀取訪問(wèn)的結(jié)果。結(jié)果。 java.sql.Statement 這個(gè)接口可在基層連接上執(zhí)行這個(gè)接口可在基層連接上執(zhí)行SQL語(yǔ)語(yǔ)句并訪問(wèn)返回結(jié)果。句并訪問(wèn)返回

15、結(jié)果。 java.sql.PreparedStatement 這是這是java.sql.Statement接接口的一個(gè)變種,可以使用參數(shù)化口的一個(gè)變種,可以使用參數(shù)化SQL語(yǔ)句。語(yǔ)句。 java.sql.CallableStatement 這個(gè)接口可運(yùn)行存儲(chǔ)過(guò)程。這個(gè)接口可運(yùn)行存儲(chǔ)過(guò)程。 java.sql.ResultSet 這個(gè)接口抽象了運(yùn)行這個(gè)接口抽象了運(yùn)行SQL select語(yǔ)句的語(yǔ)句的結(jié)果。它提供了訪問(wèn)結(jié)果的方法??梢允褂眠@個(gè)接口來(lái)訪問(wèn)結(jié)果。它提供了訪問(wèn)結(jié)果的方法。可以使用這個(gè)接口來(lái)訪問(wèn)各記錄中不同的字段。各記錄中不同的字段。2021-11-16 8:53152021-11-16 8:

16、53第 16 頁(yè)10.4.1 JDBC API10.4.1 JDBC API工具工具v1. 注冊(cè)數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序(注冊(cè)數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序(driver)vDriverManager.registerDriver():該方法用于為:該方法用于為DriverManager對(duì)象注冊(cè)特定的對(duì)象注冊(cè)特定的Driver對(duì)象。對(duì)象。DriverManager類的方法利用已注類的方法利用已注冊(cè)的驅(qū)動(dòng)器表,確定是否可以連接到某數(shù)據(jù)庫(kù)的冊(cè)的驅(qū)動(dòng)器表,確定是否可以連接到某數(shù)據(jù)庫(kù)的URL地址。地址。vClass.forName:通過(guò)調(diào)用方法:通過(guò)調(diào)用方法 Class.forName顯式地加載驅(qū)動(dòng)顯式地加載驅(qū)動(dòng)程序類。由

17、于這個(gè)調(diào)用與外部設(shè)置無(wú)關(guān),因此推薦使用這種加程序類。由于這個(gè)調(diào)用與外部設(shè)置無(wú)關(guān),因此推薦使用這種加載驅(qū)動(dòng)程序的方法。以下代碼加載類載驅(qū)動(dòng)程序的方法。以下代碼加載類 acme.db.Driver: Class.forName(acme.db.Driver); v加載驅(qū)動(dòng)程序的第一種方法需要持久的預(yù)設(shè)環(huán)境。如果對(duì)這一加載驅(qū)動(dòng)程序的第一種方法需要持久的預(yù)設(shè)環(huán)境。如果對(duì)這一點(diǎn)不能保證,則調(diào)用方法點(diǎn)不能保證,則調(diào)用方法 Class.forName 顯式地加載每個(gè)驅(qū)動(dòng)顯式地加載每個(gè)驅(qū)動(dòng)程序就顯得更為安全。這也是引入特定驅(qū)動(dòng)程序的方法。程序就顯得更為安全。這也是引入特定驅(qū)動(dòng)程序的方法。 2021-11-16

18、 8:53第 17 頁(yè)10.4.1 JDBC API10.4.1 JDBC API工具工具 v2. 建立數(shù)據(jù)庫(kù)連接的工具建立數(shù)據(jù)庫(kù)連接的工具 ( DriverManager .getConnection) vDriverManager實(shí)現(xiàn)了建立數(shù)據(jù)庫(kù)連接的3個(gè)getConnection()方法。每個(gè)方法都返回一個(gè)Connection對(duì)象,但它們接收的參數(shù)不同。v getConnection(String url)方法只接收數(shù)據(jù)庫(kù)URL作為參數(shù),用當(dāng)前的Driver對(duì)象或已注冊(cè)的Driver對(duì)象表中某個(gè)對(duì)象連接指定的數(shù)據(jù)庫(kù)。該方法中假定構(gòu)造數(shù)據(jù)庫(kù)連接時(shí)不需要用戶名、口令或其他數(shù)據(jù)庫(kù)屬性。2021

19、-11-16 8:53第 18 頁(yè)10.4.1 JDBC API10.4.1 JDBC API工具工具 v getConnection(String url, Properties info)方法接收兩個(gè)參數(shù):數(shù)據(jù)庫(kù)的URL和連接數(shù)據(jù)庫(kù)所需各種屬性的Properties對(duì)象。第二個(gè)參數(shù)必須是Properties對(duì)象,它包含連接指定數(shù)據(jù)庫(kù)所需的所有屬性項(xiàng)。v getConnection(String url, String user, String password)方法接收3個(gè)參數(shù),第一個(gè)是數(shù)據(jù)庫(kù)的URL,第二個(gè)說(shuō)明連接數(shù)據(jù)所用的用戶名;第三個(gè)是DriverManager連接數(shù)據(jù)庫(kù)時(shí)所用的用戶

20、口令。2021-11-16 8:53第 19 頁(yè)10.4.1 JDBC API10.4.1 JDBC API工具工具v3. Connection對(duì)象對(duì)象vConnection對(duì)象是用于連接數(shù)據(jù)庫(kù)和Java應(yīng)用程序的主要對(duì)象。利用它可以創(chuàng)建所有的Statement對(duì)象,這些Statement對(duì)象用于執(zhí)行SQL語(yǔ)句,并從數(shù)據(jù)庫(kù)中讀取結(jié)果。Driver對(duì)象的connect()方法和DrvierManager對(duì)象的getConnection()方法都可以創(chuàng)建應(yīng)用程序中的Connection對(duì)象。vConnection對(duì)象提供應(yīng)用程序與數(shù)據(jù)庫(kù)的靜態(tài)連接。除非調(diào)用Connection對(duì)象的close()方

21、法,或者刪除Connection對(duì)象才斷開(kāi)數(shù)據(jù)庫(kù)連接,否則保持有效連接。如果數(shù)據(jù)庫(kù)限制連接的數(shù)目,使用靜態(tài)連接過(guò)多就會(huì)存在一些問(wèn)題。這時(shí),最好只在需要時(shí)才連接數(shù)據(jù)庫(kù),并在操作完畢后斷開(kāi)數(shù)據(jù)庫(kù)連接。2021-11-16 8:53第 20 頁(yè)10.4.1 JDBC API10.4.1 JDBC API工具工具v4. Statement對(duì)象對(duì)象v連接數(shù)據(jù)庫(kù)后,要執(zhí)行SQL語(yǔ)句,得到數(shù)據(jù)庫(kù)的返回結(jié)果,必須使用Statement對(duì)象。Statement對(duì)象與Connection對(duì)象一樣不能直接創(chuàng)建,必須通過(guò)Connection對(duì)象的createStatement()方法返回個(gè)Statement對(duì)象。v利

22、用Statement對(duì)象執(zhí)行SQL查詢。靜態(tài)SQL語(yǔ)句的執(zhí)行不需要接收任何參數(shù)。而動(dòng)態(tài)SQL語(yǔ)句只有得到指定數(shù)目的參數(shù)后才是完整的SQL語(yǔ)句。靜態(tài)SQL可以是select語(yǔ)句、delete語(yǔ)句、update語(yǔ)句、insert語(yǔ)句,甚至可以是存儲(chǔ)過(guò)程的調(diào)用語(yǔ)句。update、delete和insert語(yǔ)句不返回任何結(jié)果,只修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)。select語(yǔ)句一般都要返回?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)。vStatement對(duì)象的主要方法如表10.1所示。2021-11-16 8:53第 21 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)v介紹前兩種方法:一種是通過(guò)JDBC驅(qū)動(dòng)程序,另一種是通過(guò)JDBC-OD

23、BC橋+ODBC驅(qū)動(dòng)與數(shù)據(jù)庫(kù)進(jìn)行連接。以下將用兩個(gè)實(shí)例來(lái)詳細(xì)說(shuō)明如何運(yùn)用這兩種方法與數(shù)據(jù)庫(kù)通信。v1. 使用使用JDBC驅(qū)動(dòng)程序連接驅(qū)動(dòng)程序連接PointBase數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)v下面這個(gè)例子是在Windows 操作系統(tǒng)下,使用PointBase提供的JDBC驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)。v【例10.2】 首先,安裝JDBC驅(qū)動(dòng)程序,把含有驅(qū)動(dòng)程序的.zip或者.jar文件放到CLASSPATH下。v然后,創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù):運(yùn)行PointBase,打開(kāi)DBA菜單,選擇CreateCreate New Database命令,如圖10.5所示,把這個(gè)新建的數(shù)據(jù)庫(kù)取名為DoMiSo。2021-11-16 8:53第

24、 22 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)2021-11-16 8:53第 23 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)v準(zhǔn)備工作已基本完成,運(yùn)行下面的程序就可以與PointBase下的DoMiSo數(shù)據(jù)庫(kù)進(jìn)行連接了。 程序的代碼2021-11-16 8:53第 24 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)v2. JDBC-ODBC橋橋+ODBC驅(qū)動(dòng)連接驅(qū)動(dòng)連接Access2000數(shù)據(jù)數(shù)據(jù)庫(kù)庫(kù)v在Java的開(kāi)發(fā)工具包中一般都會(huì)自帶JDBC-ODBC橋。在這個(gè)例子中,我們使用的操作系統(tǒng)是Windows XP,此系統(tǒng)下Access的ODBC驅(qū)動(dòng)已安裝配置完備。

25、v【例10.3】 首先,創(chuàng)建數(shù)據(jù)庫(kù)。運(yùn)行Microsoft Access,創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),取名為Connect。v然后,創(chuàng)建數(shù)據(jù)源。打開(kāi)控制面板,單擊“管理工具”“數(shù)據(jù)源(ODBC)”圖標(biāo),打開(kāi)“ODBC數(shù)據(jù)源管理器”對(duì)話框,單擊“添加”按鈕后彈出“創(chuàng)建新數(shù)據(jù)源”對(duì)話框,如圖所示。2021-11-16 8:53第 25 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)v在圖中的在圖中的“名稱名稱”列表框中選擇列表框中選擇“Driver do Microsoft Access”選項(xiàng),單擊選項(xiàng),單擊“完成完成”后彈出對(duì)話框。后彈出對(duì)話框。2021-11-16 8:53第 26 頁(yè)10.4.2

26、 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)v這個(gè)新的數(shù)據(jù)源命名為這個(gè)新的數(shù)據(jù)源命名為Connection,然后單擊,然后單擊“選擇選擇”按鈕,按鈕,找到找到Connect.mdb,單擊,單擊“確定確定”按鈕,至此已成功地創(chuàng)建按鈕,至此已成功地創(chuàng)建數(shù)據(jù)源。數(shù)據(jù)源。 程序代碼程序代碼 2021-11-16 8:53第 27 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)vConnectAccess連接數(shù)據(jù)源的執(zhí)行結(jié)果連接數(shù)據(jù)源的執(zhí)行結(jié)果 2021-11-16 8:53第 28 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)v3. 動(dòng)態(tài)選擇加載驅(qū)動(dòng)程序的類型動(dòng)態(tài)選擇加載驅(qū)動(dòng)程序的類型v以上所舉的兩

27、個(gè)例子都是在程序代碼中預(yù)先指定了所要加以上所舉的兩個(gè)例子都是在程序代碼中預(yù)先指定了所要加載的驅(qū)動(dòng)程序以及要連接的數(shù)據(jù)庫(kù)等信息。實(shí)際上,可以載的驅(qū)動(dòng)程序以及要連接的數(shù)據(jù)庫(kù)等信息。實(shí)際上,可以嘗試一種更一般的形式,即不在程序中固定使用哪一種驅(qū)嘗試一種更一般的形式,即不在程序中固定使用哪一種驅(qū)動(dòng)程序,也不固定動(dòng)程序,也不固定URL等,而是提供一個(gè)可視化的用戶界等,而是提供一個(gè)可視化的用戶界面,讓用戶通過(guò)選擇不同的面,讓用戶通過(guò)選擇不同的Driver和和URL來(lái)連接不同的數(shù)來(lái)連接不同的數(shù)據(jù)庫(kù)。據(jù)庫(kù)。v程序代碼程序代碼:2021-11-16 8:53第 29 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接

28、數(shù)據(jù)庫(kù)v連接連接SQL Server數(shù)據(jù)庫(kù)的有關(guān)信息數(shù)據(jù)庫(kù)的有關(guān)信息 2021-11-16 8:53第 30 頁(yè)10.4.2 10.4.2 連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)v連接因特網(wǎng)上另一臺(tái)機(jī)器上的連接因特網(wǎng)上另一臺(tái)機(jī)器上的Oracle數(shù)據(jù)庫(kù)的結(jié)果數(shù)據(jù)庫(kù)的結(jié)果 2021-11-16 8:53第 31 頁(yè)10.5 10.5 小小 結(jié)結(jié) vJDBC為在為在Java中開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用提供了一個(gè)良好的工具,中開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用提供了一個(gè)良好的工具,有了有了JDBC API,就不必為訪問(wèn)每一種數(shù)據(jù)庫(kù)各寫(xiě)一個(gè)程序,就不必為訪問(wèn)每一種數(shù)據(jù)庫(kù)各寫(xiě)一個(gè)程序,也無(wú)須擔(dān)憂要為不同的平臺(tái)編寫(xiě)不同的應(yīng)用程序。也無(wú)須擔(dān)憂要為不同的平臺(tái)編

29、寫(xiě)不同的應(yīng)用程序。vJDBC也擴(kuò)展了也擴(kuò)展了Java的網(wǎng)絡(luò)功能。例如,使用的網(wǎng)絡(luò)功能。例如,使用Java的網(wǎng)絡(luò)功的網(wǎng)絡(luò)功能,再加上能,再加上JDBC,無(wú)論何時(shí)何地都可能訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)。,無(wú)論何時(shí)何地都可能訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)。vJDBC訪問(wèn)數(shù)據(jù)庫(kù)的方式有多種,粗略劃分可分為兩類:利訪問(wèn)數(shù)據(jù)庫(kù)的方式有多種,粗略劃分可分為兩類:利用數(shù)據(jù)庫(kù)廠家的驅(qū)動(dòng)程序和利用用數(shù)據(jù)庫(kù)廠家的驅(qū)動(dòng)程序和利用ODBC;若利用前者,可到;若利用前者,可到SUN公司的網(wǎng)站或數(shù)據(jù)庫(kù)廠商的網(wǎng)站上下載驅(qū)動(dòng)程序,這些公司的網(wǎng)站或數(shù)據(jù)庫(kù)廠商的網(wǎng)站上下載驅(qū)動(dòng)程序,這些驅(qū)動(dòng)程序已實(shí)現(xiàn)為驅(qū)動(dòng)程序已實(shí)現(xiàn)為Java API訪問(wèn)數(shù)據(jù)庫(kù)的協(xié)議的接口和抽象訪問(wèn)數(shù)據(jù)庫(kù)的協(xié)議的接口和抽象類;若利用后者,在類;若利用后者,在Windows平臺(tái)已安裝好了平臺(tái)已安裝好了ODBC組件,組件,并提供了相應(yīng)于各種

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論