版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2024/11/1
09:381第10章Java與數(shù)據(jù)庫的連接武漢大學計算機學院計算機應用系2024/11/1
09:38第2頁深入了解JDBC訪問各種數(shù)據(jù)庫的驅(qū)動程序的模式熟練掌握利用JDBC訪問數(shù)據(jù)庫的步驟熟練掌握JDBC完成各種數(shù)據(jù)庫操作熟練掌握JavaAPI來編寫數(shù)據(jù)庫應用程序///ysj/hljdxb/
本章學習要點2024/11/1
09:38310.1JDBC概述2024/11/1
09:38第4頁10.1.1JBDC的用途
JDBC即Java數(shù)據(jù)庫連接(JavaDatabaseConnectivity)。JDBC為數(shù)據(jù)庫及其工具開發(fā)人員提供了一個標準的API,使他們能夠用純JavaAPI來編寫數(shù)據(jù)庫應用程序。在JDK的早期版本中,JDBC只是一個可選部件,到了JDK1.1公布時,SQL類包(也就是JDBCAPI)就成為Java語言的標準部件。JDBC擴展了Java的功能。例如,使用Java和JDBCAPI可以發(fā)布含有Applet的網(wǎng)頁,而該Applet的信息可能來自遠程數(shù)據(jù)庫。使用JDBC,使信息的管理和傳播變得容易和經(jīng)濟。
2024/11/1
09:38第5頁10.1.2從ODBC到JDBC1.ODBC的結構模型
ODBC的結構包括4個主要部分:應用程序接口、驅(qū)動程序管理器、數(shù)據(jù)庫驅(qū)動程序和數(shù)據(jù)源?!?/p>
應用程序接口:屏蔽不同的ODBC數(shù)據(jù)庫驅(qū)動程序之間函數(shù)調(diào)用的差別,為用戶提供統(tǒng)一的SQL編程接口。·
驅(qū)動程序管理器:為應用程序裝載數(shù)據(jù)庫驅(qū)動程序。·
數(shù)據(jù)庫驅(qū)動程序:實現(xiàn)ODBC的函數(shù)調(diào)用,提供對特定數(shù)據(jù)源的SQL請求。如果需要,數(shù)據(jù)庫驅(qū)動程序?qū)⑿薷膽贸绦虻恼埱?,使得請求符合相關的DBMS所支持的文法。·數(shù)據(jù)源:由用戶想要存取的數(shù)據(jù)以及與它相關的操作系統(tǒng)、DBMS和用于訪問DBMS的網(wǎng)絡平臺組成。2024/11/1
09:38第6頁10.1.2從ODBC到JDBC2.JDBC的誕生Java剛誕生時,由于沒有一個Java語言的數(shù)據(jù)庫API,編程人員不得不在Java程序中加入C語言的ODBC函數(shù)調(diào)用。這就使Java的很多優(yōu)秀特性無法充分發(fā)揮,如平臺無關性、面向?qū)ο筇匦缘?。隨著Java語言訪問數(shù)據(jù)庫的應用越來越多,對Java語言訪問數(shù)據(jù)庫API接口的要求也越來越強烈。由于ODBC有其不足之處,如它不容易使用、沒有面向?qū)ο蟮奶匦缘龋蚨鳶UN公司開發(fā)了一套Java語言的數(shù)據(jù)庫應用程序開發(fā)接口。在JDK的早期版本中,JDBC只是一個可選部件,到JDK1.1公布時,SQL類包(即JDBCAPI)就成為Java語言的標準部件。2024/11/1
09:38第7頁10.1.3JDBC的實現(xiàn)及其驅(qū)動程序1.專用網(wǎng)絡協(xié)議的驅(qū)動程序與數(shù)據(jù)庫直接通信這種實現(xiàn)方法是直接使用數(shù)據(jù)庫廠商提供的、用專用網(wǎng)絡協(xié)議創(chuàng)建的驅(qū)動程序,通過它可以直接將JDBCAPI調(diào)用轉(zhuǎn)換為網(wǎng)絡調(diào)用,其結構如圖所示。這種調(diào)用方式一般性能比較好,而且也是最簡單實用的方法。因為它不需要安裝其他的庫程序或者中間件,幾乎所有的數(shù)據(jù)庫廠商都為他們的數(shù)據(jù)庫提供了這種JDBC驅(qū)動程序,也可以從第三方廠商獲得這些驅(qū)動程序。從網(wǎng)址/products/jdbc/drivers/可以看到所有可用驅(qū)動程序的清單。應用程序JDBCAPI驅(qū)動程序數(shù)據(jù)源2024/11/1
09:38第8頁10.1.3JDBC的實現(xiàn)及其驅(qū)動程序2.通過JDBC-ODBC橋與ODBC數(shù)據(jù)源通信作為JDBC的一部分,SUN公司還發(fā)行了一個用于訪問ODBC數(shù)據(jù)源的驅(qū)動程序,稱為JDBC-ODBC橋接器。它是用jdbcodbc.c1ass和一個用于訪問ODBC驅(qū)動程序的本地庫來實現(xiàn)的。該本地庫是一個動態(tài)連接庫DLL(JDBCODBC.DLL)。這個驅(qū)動程序把JDBC的方法映射到ODBC調(diào)用上,這樣,JDBC就可以和任何可用的ODBC驅(qū)動程序進行交互。它使JDBC目前有能力訪問幾乎所有的數(shù)據(jù)庫。應用程序JDBCAPIJDBC-ODBCODBC層ODBCAPI數(shù)據(jù)源2024/11/1
09:38第9頁10.1.3JDBC的實現(xiàn)及其驅(qū)動程序3.通過部分專用的驅(qū)動程序與數(shù)據(jù)庫通信這種方式的特點是將JDBC數(shù)據(jù)庫調(diào)用直接翻譯為廠商專用的API,與上述的JDBC-ODBC橋接器相比,它的執(zhí)行更有效、更快捷,其模式如圖所示。應用程序JDBCAPI驅(qū)動程序數(shù)據(jù)源專用API4.這種JDBC是純Java的,直接與數(shù)據(jù)庫實例交互。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這兩個包中。Java.sql這個包中包含的類和接口采用的是傳統(tǒng)的C/S體系結構。它的功能主要針對的是基本數(shù)據(jù)庫編程服務,如生成連接、執(zhí)行語句以及準備語句和運行批處理查詢等。也有一些其它的高級功能。Javax.sql它與Java.sql相比,引入了一些JDBC編程方面的主要的體系結構的改變,并且為連接管理、分布式事務處理和連接提供了更好的抽象。同時,這個包還引入了容器管理的連接緩沖池、分布式事務處理和行集(rowset)等機制。2024/11/1
09:38第12頁10.3JDBCAPI介紹編寫簡單JDBC程序的基本步驟:2024/11/1
09:38第13頁10.3.1連接管理要編寫一個JDBC程序,首先應該將它與數(shù)據(jù)庫進行連接。在連接管理這一組中,主要有下面2個類和2個接口。·java.sql.DriverManager這個類提供了用于管理一個或多個數(shù)據(jù)庫驅(qū)動程序。每個驅(qū)動程序都可以連接特定的數(shù)據(jù)庫?!ava.sql.DriverPropertyInfo由于每個數(shù)據(jù)庫都需要一組屬性以獲得一條連接,這個類可用于查找連接所需要的屬性?!ava.sql.Driver這是一個抽象了廠商專用連接協(xié)議的接口,可從數(shù)據(jù)庫的生產(chǎn)廠商或第三方廠商獲得該接口的實現(xiàn)?!ava.sql.Connection這個接口抽象了大部分與數(shù)據(jù)庫的交互活動。通過一條連接,可以向數(shù)據(jù)庫發(fā)送SQL語句以及讀取執(zhí)行的結果。2024/11/1
09:38第14頁10.3.2數(shù)據(jù)庫訪問當建立連接后,可以發(fā)送SQL語句訪問數(shù)據(jù)庫和讀取訪問的結果?!?/p>
java.sql.Statement
這個接口可在基層連接上執(zhí)行SQL語句并訪問返回結果。·
java.sql.PreparedStatement
這是java.sql.Statement接口的一個變種,可以使用參數(shù)化SQL語句?!ava.sql.CallableStatement
這個接口可運行存儲過程。·java.sql.ResultSet這個接口抽象了運行SQLselect語句的結果。它提供了訪問結果的方法??梢允褂眠@個接口來訪問各記錄中不同的字段。2024/11/1
09:381510.4JDBCAPI的使用方法2024/11/1
09:38第16頁10.4.1JDBCAPI工具1.注冊數(shù)據(jù)庫的驅(qū)動程序(driver)DriverManager.registerDriver():該方法用于為DriverManager對象注冊特定的Driver對象。DriverManager類的方法利用已注冊的驅(qū)動器表,確定是否可以連接到某數(shù)據(jù)庫的URL地址。Class.forName:通過調(diào)用方法Class.forName顯式地加載驅(qū)動程序類。由于這個調(diào)用與外部設置無關,因此推薦使用這種加載驅(qū)動程序的方法。以下代碼加載類acme.db.Driver:
Class.forName("acme.db.Driver");
加載驅(qū)動程序的第一種方法需要持久的預設環(huán)境。如果對這一點不能保證,則調(diào)用方法Class.forName顯式地加載每個驅(qū)動程序就顯得更為安全。這也是引入特定驅(qū)動程序的方法。
2024/11/1
09:38第17頁10.4.1JDBCAPI工具2.建立數(shù)據(jù)庫連接的工具(DriverManager.getConnection)DriverManager實現(xiàn)了建立數(shù)據(jù)庫連接的3個getConnection()方法。每個方法都返回一個Connection對象,但它們接收的參數(shù)不同?!etConnection(Stringurl)方法只接收數(shù)據(jù)庫URL作為參數(shù),用當前的Driver對象或已注冊的Driver對象表中某個對象連接指定的數(shù)據(jù)庫。該方法中假定構造數(shù)據(jù)庫連接時不需要用戶名、口令或其他數(shù)據(jù)庫屬性。2024/11/1
09:38第18頁10.4.1JDBCAPI工具·
getConnection(Stringurl,Propertiesinfo)方法接收兩個參數(shù):數(shù)據(jù)庫的URL和連接數(shù)據(jù)庫所需各種屬性的Properties對象。第二個參數(shù)必須是Properties對象,它包含連接指定數(shù)據(jù)庫所需的所有屬性項。·getConnection(Stringurl,Stringuser,Stringpassword)方法接收3個參數(shù),第一個是數(shù)據(jù)庫的URL,第二個說明連接數(shù)據(jù)所用的用戶名;第三個是DriverManager連接數(shù)據(jù)庫時所用的用戶口令。2024/11/1
09:38第19頁10.4.1JDBCAPI工具3.Connection對象Connection對象是用于連接數(shù)據(jù)庫和Java應用程序的主要對象。利用它可以創(chuàng)建所有的Statement對象,這些Statement對象用于執(zhí)行SQL語句,并從數(shù)據(jù)庫中讀取結果。Driver對象的connect()方法和DrvierManager對象的getConnection()方法都可以創(chuàng)建應用程序中的Connection對象。Connection對象提供應用程序與數(shù)據(jù)庫的靜態(tài)連接。除非調(diào)用Connection對象的close()方法,或者刪除Connection對象才斷開數(shù)據(jù)庫連接,否則保持有效連接。如果數(shù)據(jù)庫限制連接的數(shù)目,使用靜態(tài)連接過多就會存在一些問題。這時,最好只在需要時才連接數(shù)據(jù)庫,并在操作完畢后斷開數(shù)據(jù)庫連接。2024/11/1
09:38第20頁10.4.1JDBCAPI工具4.Statement對象連接數(shù)據(jù)庫后,要執(zhí)行SQL語句,得到數(shù)據(jù)庫的返回結果,必須使用Statement對象。Statement對象與Connection對象一樣不能直接創(chuàng)建,必須通過Connection對象的createStatement()方法返回—個Statement對象。利用Statement對象執(zhí)行SQL查詢。靜態(tài)SQL語句的執(zhí)行不需要接收任何參數(shù)。而動態(tài)SQL語句只有得到指定數(shù)目的參數(shù)后才是完整的SQL語句。靜態(tài)SQL可以是select語句、delete語句、update語句、insert語句,甚至可以是存儲過程的調(diào)用語句。update、delete和insert語句不返回任何結果,只修改數(shù)據(jù)庫中的數(shù)據(jù)。select語句一般都要返回數(shù)據(jù)庫中的數(shù)據(jù)。Statement對象的主要方法如表10.1所示。2024/11/1
09:38第21頁10.4.2連接數(shù)據(jù)庫介紹前兩種方法:一種是通過JDBC驅(qū)動程序,另一種是通過JDBC-ODBC橋+ODBC驅(qū)動與數(shù)據(jù)庫進行連接。以下將用兩個實例來詳細說明如何運用這兩種方法與數(shù)據(jù)庫通信。1.使用JDBC驅(qū)動程序連接PointBase數(shù)據(jù)庫下面這個例子是在Windows操作系統(tǒng)下,使用PointBase提供的JDBC驅(qū)動連接數(shù)據(jù)庫?!纠?0.2】首先,安裝JDBC驅(qū)動程序,把含有驅(qū)動程序的.zip或者.jar文件放到CLASSPATH下。然后,創(chuàng)建一個新的數(shù)據(jù)庫:運行PointBase,打開DBA菜單,選擇Create→CreateNewDatabase命令,如圖10.5所示,把這個新建的數(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ù)庫準備工作已基本完成,運行下面的程序就可以與PointBase下的DoMiSo數(shù)據(jù)庫進行連接了。程序的代碼2024/11/1
09:38第24頁10.4.2連接數(shù)據(jù)庫2.JDBC-ODBC橋+ODBC驅(qū)動連接Access2000數(shù)據(jù)庫在Java的開發(fā)工具包中一般都會自帶JDBC-ODBC橋。在這個例子中,我們使用的操作系統(tǒng)是WindowsXP,此系統(tǒng)下Access的ODBC驅(qū)動已安裝配置完備?!纠?0.3】首先,創(chuàng)建數(shù)據(jù)庫。運行MicrosoftAccess,創(chuàng)建一個新的數(shù)據(jù)庫,取名為Connect。然后,創(chuàng)建數(shù)據(jù)源。打開控制面板,單擊“管理工具”→“數(shù)據(jù)源(ODBC)”圖標,打開“ODBC數(shù)據(jù)源管理器”對話框,單擊“添加”按鈕后彈出“創(chuàng)建新數(shù)據(jù)源”對話框,如圖所示。2024/11/1
09:38第25頁10.4.2連接數(shù)據(jù)庫在圖中的“名稱”列表框中選擇“DriverdoMicrosoftAccess”選項,單擊“完成”后彈出對話框。2024/11/1
09:38第26頁10.4.2連接數(shù)據(jù)庫這個新的數(shù)據(jù)源命名為Connection,然后單擊“選擇”按鈕,找到Connect.mdb,單擊“確定”按鈕,至此已成功地創(chuàng)建數(shù)據(jù)源。程序代碼
2024/11/1
09:38第27頁10.4.2連接數(shù)據(jù)庫ConnectAccess連接數(shù)據(jù)源的執(zhí)行結果2024/11/1
09:38第28頁10.4.2連接數(shù)據(jù)庫3.動態(tài)選擇加載驅(qū)動程序的類型以上所舉的兩個例子都是在程序代碼中預先指定了所要加載的驅(qū)動程序以及要連接的數(shù)據(jù)庫等信息。實際上,可以嘗試一種更一般的形式,即不在程序中固定使用哪一種驅(qū)動程序,也不固定URL等,而是提供一個可視化的用戶界面,讓用戶通過選擇不同的Driver和URL來連接不同的數(shù)據(jù)庫。程序代碼:2024/11/1
09:38第29頁10.4.2連接數(shù)據(jù)庫連接SQLServer數(shù)據(jù)庫的有關信息2024/11/1
09:38第30頁10.4.2連接數(shù)據(jù)庫連接因特網(wǎng)上另一臺機器上的Oracle數(shù)據(jù)庫的結果2024/11/1
09:38第31頁10.5小結JDBC為在Java中開發(fā)數(shù)據(jù)庫應用提供了一個良好的工具,有了JDBCAPI,就不必為訪問每一種數(shù)據(jù)庫各寫一個程序,也無須擔憂要為不同的平臺編寫不同的應用程序。JDBC也擴展了Java的網(wǎng)絡功能。例如,使用Java的網(wǎng)絡功能,再加上JDBC,無論何時何地都可能訪問遠程數(shù)據(jù)庫。JDBC訪問數(shù)據(jù)庫的方式有多種,粗略劃分可分為兩類:利用數(shù)據(jù)庫廠家的驅(qū)動程序和利用ODBC;若利用前者,可到SUN公司的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工廠電工雇傭合同范例
- 公司授權個人代表公司簽署協(xié)議3篇
- 公私合作采購合同3篇
- 網(wǎng)絡代銷協(xié)議合同范例
- 發(fā)包人承包人合同協(xié)議書3篇
- 勞動合同協(xié)議工作地點2篇
- 公共管理與政策制定培訓合同范本3篇
- 租房水電合同范例
- 產(chǎn)地租賃合同模板3篇
- 農(nóng)村簡易橋梁合同范例
- 2023年中國華電集團發(fā)電運營有限公司招聘筆試題庫及答案解析
- GB/T 3103.3-2000緊固件公差平墊圈
- 會議紀要的撰寫
- GB/T 13247-1991鐵合金產(chǎn)品粒度的取樣和檢測方法
- GB 40165-2021固定式電子設備用鋰離子電池和電池組安全技術規(guī)范
- 磨課中成長,合作中進步
- 《網(wǎng)絡傳播概論》考試復習題庫(附答案)
- 熱力環(huán)流(公開課)課件
- 6、鍋爐日常運行、使用狀況記錄 (按月填寫)-供參考
- 工程結算單范本29773
- 小學道德與法治學科項目化學習設計
評論
0/150
提交評論