版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2024/11/1
09:381第10章Java與數(shù)據(jù)庫的連接武漢大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)應(yīng)用系2024/11/1
09:38第2頁深入了解JDBC訪問各種數(shù)據(jù)庫的驅(qū)動(dòng)程序的模式熟練掌握利用JDBC訪問數(shù)據(jù)庫的步驟熟練掌握J(rèn)DBC完成各種數(shù)據(jù)庫操作熟練掌握J(rèn)avaAPI來編寫數(shù)據(jù)庫應(yīng)用程序///ysj/hljdxb/
本章學(xué)習(xí)要點(diǎn)2024/11/1
09:38310.1JDBC概述2024/11/1
09:38第4頁10.1.1JBDC的用途
JDBC即Java數(shù)據(jù)庫連接(JavaDatabaseConnectivity)。JDBC為數(shù)據(jù)庫及其工具開發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,使他們能夠用純JavaAPI來編寫數(shù)據(jù)庫應(yīng)用程序。在JDK的早期版本中,JDBC只是一個(gè)可選部件,到了JDK1.1公布時(shí),SQL類包(也就是JDBCAPI)就成為Java語言的標(biāo)準(zhǔn)部件。JDBC擴(kuò)展了Java的功能。例如,使用Java和JDBCAPI可以發(fā)布含有Applet的網(wǎng)頁,而該Applet的信息可能來自遠(yuǎn)程數(shù)據(jù)庫。使用JDBC,使信息的管理和傳播變得容易和經(jīng)濟(jì)。
2024/11/1
09:38第5頁10.1.2從ODBC到JDBC1.ODBC的結(jié)構(gòu)模型
ODBC的結(jié)構(gòu)包括4個(gè)主要部分:應(yīng)用程序接口、驅(qū)動(dòng)程序管理器、數(shù)據(jù)庫驅(qū)動(dòng)程序和數(shù)據(jù)源。·
應(yīng)用程序接口:屏蔽不同的ODBC數(shù)據(jù)庫驅(qū)動(dòng)程序之間函數(shù)調(diào)用的差別,為用戶提供統(tǒng)一的SQL編程接口?!?/p>
驅(qū)動(dòng)程序管理器:為應(yīng)用程序裝載數(shù)據(jù)庫驅(qū)動(dòng)程序?!?/p>
數(shù)據(jù)庫驅(qū)動(dòng)程序:實(shí)現(xiàn)ODBC的函數(shù)調(diào)用,提供對特定數(shù)據(jù)源的SQL請求。如果需要,數(shù)據(jù)庫驅(qū)動(dòng)程序?qū)⑿薷膽?yīng)用程序的請求,使得請求符合相關(guān)的DBMS所支持的文法?!?shù)據(jù)源:由用戶想要存取的數(shù)據(jù)以及與它相關(guān)的操作系統(tǒng)、DBMS和用于訪問DBMS的網(wǎng)絡(luò)平臺(tái)組成。2024/11/1
09:38第6頁10.1.2從ODBC到JDBC2.JDBC的誕生Java剛誕生時(shí),由于沒有一個(gè)Java語言的數(shù)據(jù)庫API,編程人員不得不在Java程序中加入C語言的ODBC函數(shù)調(diào)用。這就使Java的很多優(yōu)秀特性無法充分發(fā)揮,如平臺(tái)無關(guān)性、面向?qū)ο筇匦缘?。隨著Java語言訪問數(shù)據(jù)庫的應(yīng)用越來越多,對Java語言訪問數(shù)據(jù)庫API接口的要求也越來越強(qiáng)烈。由于ODBC有其不足之處,如它不容易使用、沒有面向?qū)ο蟮奶匦缘?,因而SUN公司開發(fā)了一套Java語言的數(shù)據(jù)庫應(yīng)用程序開發(fā)接口。在JDK的早期版本中,JDBC只是一個(gè)可選部件,到JDK1.1公布時(shí),SQL類包(即JDBCAPI)就成為Java語言的標(biāo)準(zhǔn)部件。2024/11/1
09:38第7頁10.1.3JDBC的實(shí)現(xiàn)及其驅(qū)動(dòng)程序1.專用網(wǎng)絡(luò)協(xié)議的驅(qū)動(dòng)程序與數(shù)據(jù)庫直接通信這種實(shí)現(xiàn)方法是直接使用數(shù)據(jù)庫廠商提供的、用專用網(wǎng)絡(luò)協(xié)議創(chuàng)建的驅(qū)動(dòng)程序,通過它可以直接將JDBCAPI調(diào)用轉(zhuǎn)換為網(wǎng)絡(luò)調(diào)用,其結(jié)構(gòu)如圖所示。這種調(diào)用方式一般性能比較好,而且也是最簡單實(shí)用的方法。因?yàn)樗恍枰惭b其他的庫程序或者中間件,幾乎所有的數(shù)據(jù)庫廠商都為他們的數(shù)據(jù)庫提供了這種JDBC驅(qū)動(dòng)程序,也可以從第三方廠商獲得這些驅(qū)動(dòng)程序。從網(wǎng)址/products/jdbc/drivers/可以看到所有可用驅(qū)動(dòng)程序的清單。應(yīng)用程序JDBCAPI驅(qū)動(dòng)程序數(shù)據(jù)源2024/11/1
09:38第8頁10.1.3JDBC的實(shí)現(xiàn)及其驅(qū)動(dòng)程序2.通過JDBC-ODBC橋與ODBC數(shù)據(jù)源通信作為JDBC的一部分,SUN公司還發(fā)行了一個(gè)用于訪問ODBC數(shù)據(jù)源的驅(qū)動(dòng)程序,稱為JDBC-ODBC橋接器。它是用jdbcodbc.c1ass和一個(gè)用于訪問ODBC驅(qū)動(dòng)程序的本地庫來實(shí)現(xiàn)的。該本地庫是一個(gè)動(dòng)態(tài)連接庫DLL(JDBCODBC.DLL)。這個(gè)驅(qū)動(dòng)程序把JDBC的方法映射到ODBC調(diào)用上,這樣,JDBC就可以和任何可用的ODBC驅(qū)動(dòng)程序進(jìn)行交互。它使JDBC目前有能力訪問幾乎所有的數(shù)據(jù)庫。應(yīng)用程序JDBCAPIJDBC-ODBCODBC層ODBCAPI數(shù)據(jù)源2024/11/1
09:38第9頁10.1.3JDBC的實(shí)現(xiàn)及其驅(qū)動(dòng)程序3.通過部分專用的驅(qū)動(dòng)程序與數(shù)據(jù)庫通信這種方式的特點(diǎn)是將JDBC數(shù)據(jù)庫調(diào)用直接翻譯為廠商專用的API,與上述的JDBC-ODBC橋接器相比,它的執(zhí)行更有效、更快捷,其模式如圖所示。應(yīng)用程序JDBCAPI驅(qū)動(dòng)程序數(shù)據(jù)源專用API4.這種JDBC是純Java的,直接與數(shù)據(jù)庫實(shí)例交互。JavaAPI---JDBC----數(shù)據(jù)庫協(xié)議----數(shù)據(jù)庫2024/11/1
09:381010.3JDBCAPI介紹2024/11/1
09:38第11頁10.3JDBCAPI介紹
JDBCAPI所有的類和接口都集中在Java.sql和Javax.sql這兩個(gè)包中。Java.sql這個(gè)包中包含的類和接口采用的是傳統(tǒng)的C/S體系結(jié)構(gòu)。它的功能主要針對的是基本數(shù)據(jù)庫編程服務(wù),如生成連接、執(zhí)行語句以及準(zhǔn)備語句和運(yùn)行批處理查詢等。也有一些其它的高級功能。Javax.sql它與Java.sql相比,引入了一些JDBC編程方面的主要的體系結(jié)構(gòu)的改變,并且為連接管理、分布式事務(wù)處理和連接提供了更好的抽象。同時(shí),這個(gè)包還引入了容器管理的連接緩沖池、分布式事務(wù)處理和行集(rowset)等機(jī)制。2024/11/1
09:38第12頁10.3JDBCAPI介紹編寫簡單JDBC程序的基本步驟:2024/11/1
09:38第13頁10.3.1連接管理要編寫一個(gè)JDBC程序,首先應(yīng)該將它與數(shù)據(jù)庫進(jìn)行連接。在連接管理這一組中,主要有下面2個(gè)類和2個(gè)接口。·java.sql.DriverManager這個(gè)類提供了用于管理一個(gè)或多個(gè)數(shù)據(jù)庫驅(qū)動(dòng)程序。每個(gè)驅(qū)動(dòng)程序都可以連接特定的數(shù)據(jù)庫?!ava.sql.DriverPropertyInfo由于每個(gè)數(shù)據(jù)庫都需要一組屬性以獲得一條連接,這個(gè)類可用于查找連接所需要的屬性?!ava.sql.Driver這是一個(gè)抽象了廠商專用連接協(xié)議的接口,可從數(shù)據(jù)庫的生產(chǎn)廠商或第三方廠商獲得該接口的實(shí)現(xiàn)?!ava.sql.Connection這個(gè)接口抽象了大部分與數(shù)據(jù)庫的交互活動(dòng)。通過一條連接,可以向數(shù)據(jù)庫發(fā)送SQL語句以及讀取執(zhí)行的結(jié)果。2024/11/1
09:38第14頁10.3.2數(shù)據(jù)庫訪問當(dāng)建立連接后,可以發(fā)送SQL語句訪問數(shù)據(jù)庫和讀取訪問的結(jié)果。·
java.sql.Statement
這個(gè)接口可在基層連接上執(zhí)行SQL語句并訪問返回結(jié)果?!?/p>
java.sql.PreparedStatement
這是java.sql.Statement接口的一個(gè)變種,可以使用參數(shù)化SQL語句?!ava.sql.CallableStatement
這個(gè)接口可運(yùn)行存儲(chǔ)過程?!ava.sql.ResultSet這個(gè)接口抽象了運(yùn)行SQLselect語句的結(jié)果。它提供了訪問結(jié)果的方法。可以使用這個(gè)接口來訪問各記錄中不同的字段。2024/11/1
09:381510.4JDBCAPI的使用方法2024/11/1
09:38第16頁10.4.1JDBCAPI工具1.注冊數(shù)據(jù)庫的驅(qū)動(dòng)程序(driver)DriverManager.registerDriver():該方法用于為DriverManager對象注冊特定的Driver對象。DriverManager類的方法利用已注冊的驅(qū)動(dòng)器表,確定是否可以連接到某數(shù)據(jù)庫的URL地址。Class.forName:通過調(diào)用方法Class.forName顯式地加載驅(qū)動(dòng)程序類。由于這個(gè)調(diào)用與外部設(shè)置無關(guān),因此推薦使用這種加載驅(qū)動(dòng)程序的方法。以下代碼加載類acme.db.Driver:
Class.forName("acme.db.Driver");
加載驅(qū)動(dòng)程序的第一種方法需要持久的預(yù)設(shè)環(huán)境。如果對這一點(diǎn)不能保證,則調(diào)用方法Class.forName顯式地加載每個(gè)驅(qū)動(dòng)程序就顯得更為安全。這也是引入特定驅(qū)動(dòng)程序的方法。
2024/11/1
09:38第17頁10.4.1JDBCAPI工具2.建立數(shù)據(jù)庫連接的工具(DriverManager.getConnection)DriverManager實(shí)現(xiàn)了建立數(shù)據(jù)庫連接的3個(gè)getConnection()方法。每個(gè)方法都返回一個(gè)Connection對象,但它們接收的參數(shù)不同。·getConnection(Stringurl)方法只接收數(shù)據(jù)庫URL作為參數(shù),用當(dāng)前的Driver對象或已注冊的Driver對象表中某個(gè)對象連接指定的數(shù)據(jù)庫。該方法中假定構(gòu)造數(shù)據(jù)庫連接時(shí)不需要用戶名、口令或其他數(shù)據(jù)庫屬性。2024/11/1
09:38第18頁10.4.1JDBCAPI工具·
getConnection(Stringurl,Propertiesinfo)方法接收兩個(gè)參數(shù):數(shù)據(jù)庫的URL和連接數(shù)據(jù)庫所需各種屬性的Properties對象。第二個(gè)參數(shù)必須是Properties對象,它包含連接指定數(shù)據(jù)庫所需的所有屬性項(xiàng)?!etConnection(Stringurl,Stringuser,Stringpassword)方法接收3個(gè)參數(shù),第一個(gè)是數(shù)據(jù)庫的URL,第二個(gè)說明連接數(shù)據(jù)所用的用戶名;第三個(gè)是DriverManager連接數(shù)據(jù)庫時(shí)所用的用戶口令。2024/11/1
09:38第19頁10.4.1JDBCAPI工具3.Connection對象Connection對象是用于連接數(shù)據(jù)庫和Java應(yīng)用程序的主要對象。利用它可以創(chuàng)建所有的Statement對象,這些Statement對象用于執(zhí)行SQL語句,并從數(shù)據(jù)庫中讀取結(jié)果。Driver對象的connect()方法和DrvierManager對象的getConnection()方法都可以創(chuàng)建應(yīng)用程序中的Connection對象。Connection對象提供應(yīng)用程序與數(shù)據(jù)庫的靜態(tài)連接。除非調(diào)用Connection對象的close()方法,或者刪除Connection對象才斷開數(shù)據(jù)庫連接,否則保持有效連接。如果數(shù)據(jù)庫限制連接的數(shù)目,使用靜態(tài)連接過多就會(huì)存在一些問題。這時(shí),最好只在需要時(shí)才連接數(shù)據(jù)庫,并在操作完畢后斷開數(shù)據(jù)庫連接。2024/11/1
09:38第20頁10.4.1JDBCAPI工具4.Statement對象連接數(shù)據(jù)庫后,要執(zhí)行SQL語句,得到數(shù)據(jù)庫的返回結(jié)果,必須使用Statement對象。Statement對象與Connection對象一樣不能直接創(chuàng)建,必須通過Connection對象的createStatement()方法返回—個(gè)Statement對象。利用Statement對象執(zhí)行SQL查詢。靜態(tài)SQL語句的執(zhí)行不需要接收任何參數(shù)。而動(dòng)態(tài)SQL語句只有得到指定數(shù)目的參數(shù)后才是完整的SQL語句。靜態(tài)SQL可以是select語句、delete語句、update語句、insert語句,甚至可以是存儲(chǔ)過程的調(diào)用語句。update、delete和insert語句不返回任何結(jié)果,只修改數(shù)據(jù)庫中的數(shù)據(jù)。select語句一般都要返回?cái)?shù)據(jù)庫中的數(shù)據(jù)。Statement對象的主要方法如表10.1所示。2024/11/1
09:38第21頁10.4.2連接數(shù)據(jù)庫介紹前兩種方法:一種是通過JDBC驅(qū)動(dòng)程序,另一種是通過JDBC-ODBC橋+ODBC驅(qū)動(dòng)與數(shù)據(jù)庫進(jìn)行連接。以下將用兩個(gè)實(shí)例來詳細(xì)說明如何運(yùn)用這兩種方法與數(shù)據(jù)庫通信。1.使用JDBC驅(qū)動(dòng)程序連接PointBase數(shù)據(jù)庫下面這個(gè)例子是在Windows操作系統(tǒng)下,使用PointBase提供的JDBC驅(qū)動(dòng)連接數(shù)據(jù)庫?!纠?0.2】首先,安裝JDBC驅(qū)動(dòng)程序,把含有驅(qū)動(dòng)程序的.zip或者.jar文件放到CLASSPATH下。然后,創(chuàng)建一個(gè)新的數(shù)據(jù)庫:運(yùn)行PointBase,打開DBA菜單,選擇Create→CreateNewDatabase命令,如圖10.5所示,把這個(gè)新建的數(shù)據(jù)庫取名為DoMiSo。2024/11/1
09:38第22頁10.4.2連接數(shù)據(jù)庫2024/11/1
09:38第23頁10.4.2連接數(shù)據(jù)庫準(zhǔn)備工作已基本完成,運(yùn)行下面的程序就可以與PointBase下的DoMiSo數(shù)據(jù)庫進(jìn)行連接了。程序的代碼2024/11/1
09:38第24頁10.4.2連接數(shù)據(jù)庫2.JDBC-ODBC橋+ODBC驅(qū)動(dòng)連接Access2000數(shù)據(jù)庫在Java的開發(fā)工具包中一般都會(huì)自帶JDBC-ODBC橋。在這個(gè)例子中,我們使用的操作系統(tǒng)是WindowsXP,此系統(tǒng)下Access的ODBC驅(qū)動(dòng)已安裝配置完備?!纠?0.3】首先,創(chuàng)建數(shù)據(jù)庫。運(yùn)行MicrosoftAccess,創(chuàng)建一個(gè)新的數(shù)據(jù)庫,取名為Connect。然后,創(chuàng)建數(shù)據(jù)源。打開控制面板,單擊“管理工具”→“數(shù)據(jù)源(ODBC)”圖標(biāo),打開“ODBC數(shù)據(jù)源管理器”對話框,單擊“添加”按鈕后彈出“創(chuàng)建新數(shù)據(jù)源”對話框,如圖所示。2024/11/1
09:38第25頁10.4.2連接數(shù)據(jù)庫在圖中的“名稱”列表框中選擇“DriverdoMicrosoftAccess”選項(xiàng),單擊“完成”后彈出對話框。2024/11/1
09:38第26頁10.4.2連接數(shù)據(jù)庫這個(gè)新的數(shù)據(jù)源命名為Connection,然后單擊“選擇”按鈕,找到Connect.mdb,單擊“確定”按鈕,至此已成功地創(chuàng)建數(shù)據(jù)源。程序代碼
2024/11/1
09:38第27頁10.4.2連接數(shù)據(jù)庫ConnectAccess連接數(shù)據(jù)源的執(zhí)行結(jié)果2024/11/1
09:38第28頁10.4.2連接數(shù)據(jù)庫3.動(dòng)態(tài)選擇加載驅(qū)動(dòng)程序的類型以上所舉的兩個(gè)例子都是在程序代碼中預(yù)先指定了所要加載的驅(qū)動(dòng)程序以及要連接的數(shù)據(jù)庫等信息。實(shí)際上,可以嘗試一種更一般的形式,即不在程序中固定使用哪一種驅(qū)動(dòng)程序,也不固定URL等,而是提供一個(gè)可視化的用戶界面,讓用戶通過選擇不同的Driver和URL來連接不同的數(shù)據(jù)庫。程序代碼:2024/11/1
09:38第29頁10.4.2連接數(shù)據(jù)庫連接SQLServer數(shù)據(jù)庫的有關(guān)信息2024/11/1
09:38第30頁10.4.2連接數(shù)據(jù)庫連接因特網(wǎng)上另一臺(tái)機(jī)器上的Oracle數(shù)據(jù)庫的結(jié)果2024/11/1
09:38第31頁10.5小結(jié)JDBC為在Java中開發(fā)數(shù)據(jù)庫應(yīng)用提供了一個(gè)良好的工具,有了JDBCAPI,就不必為訪問每一種數(shù)據(jù)庫各寫一個(gè)程序,也無須擔(dān)憂要為不同的平臺(tái)編寫不同的應(yīng)用程序。JDBC也擴(kuò)展了Java的網(wǎng)絡(luò)功能。例如,使用Java的網(wǎng)絡(luò)功能,再加上JDBC,無論何時(shí)何地都可能訪問遠(yuǎn)程數(shù)據(jù)庫。JDBC訪問數(shù)據(jù)庫的方式有多種,粗略劃分可分為兩類:利用數(shù)據(jù)庫廠家的驅(qū)動(dòng)程序和利用ODBC;若利用前者,可到SUN公司的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年05月江蘇中國建設(shè)銀行建行大學(xué)華東學(xué)院“建習(xí)生”暑期實(shí)習(xí)生招考筆試歷年參考題庫附帶答案詳解
- 《離散數(shù)學(xué)半群與群》課件
- 農(nóng)業(yè)大棚轉(zhuǎn)讓合同(2篇)
- MySQL數(shù)據(jù)庫教程課件
- 2024年05月北京中信銀行機(jī)構(gòu)客戶部社會(huì)招考(511)筆試歷年參考題庫附帶答案詳解
- 2025年粵教新版選擇性必修1歷史上冊月考試卷含答案
- 《封裝工藝流程》課件
- 2024年昭通市第二人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年滬教新版五年級英語下冊月考試卷含答案
- 2025年浙教版高一數(shù)學(xué)上冊階段測試試卷
- GB/T 45014-2024聚合物基復(fù)合材料層壓板緊固件拉脫阻抗試驗(yàn)方法
- 傳播學(xué)(東北林業(yè)大學(xué))知到智慧樹章節(jié)答案
- 2024年安全員之A證考試題庫及完整答案(網(wǎng)校專用)
- 統(tǒng)編版2024-2025學(xué)年三年級上冊語文期末情景測試卷 (無答案)
- 績效考核辦法1
- 【MOOC】外科護(hù)理學(xué)-中山大學(xué) 中國大學(xué)慕課MOOC答案
- 年度學(xué)校辦公室工作總結(jié)
- 2025版國家開放大學(xué)法律事務(wù)??啤睹穹▽W(xué)(2)》期末紙質(zhì)考試總題庫
- 【MOOC】思辨式英文寫作-南開大學(xué) 中國大學(xué)慕課MOOC答案
- 生物人教版(2024版)生物七年級上冊復(fù)習(xí)材料
- 企業(yè)地震應(yīng)急預(yù)案管理方案
評論
0/150
提交評論