版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、電子課件JAVA語言程序設(shè)計java11第11章JDBC技術(shù)11.1關(guān)系型數(shù)據(jù)庫的驅(qū)動與連接11.2使用SQL指令操作數(shù)據(jù)庫本章目錄11.1關(guān)系型數(shù)據(jù)庫的驅(qū)動與連接一、JDBC技術(shù)概述JDBC(Java DateBase Connectivity)是一種可用于執(zhí)行SQL語句指令的Java API,它由一些Java語言寫的類和接口組成,主要存放在java.sql包中。常用的包括DriverManager類,Connection接口,Statement接口,ResultSetMetaDada接口,ResultSet接口等,在J2EE中又對JDBC的有關(guān)功能進行了增強和擴展,新的內(nèi)容放在了javax
2、.sql包中。Java語言程序使用JDBC與數(shù)據(jù)庫進行通訊,其主要的功能是實現(xiàn)與各種數(shù)據(jù)庫的連接,實現(xiàn)了API與特定驅(qū)動器的分離。JDBC提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。在Java語言的程序中不必考慮數(shù)據(jù)庫的類型而采用統(tǒng)一的程序代碼完成數(shù)據(jù)庫的管理,可以很方便地將SQL語句指令傳送給幾乎任何一種數(shù)據(jù)庫。通過使用JDBC,大大地擴展了Java語言處理數(shù)據(jù)庫的能力。現(xiàn)在隨著Java語言為越來越多的大公司所支持,大多數(shù)流行的商業(yè)化的數(shù)據(jù)庫管理系統(tǒng)都已經(jīng)包含有JDBC驅(qū)動器,而且由于Java語言的開放式策略,市場上還有第三方的產(chǎn)品可供選擇,使用
3、JDBC也越來越方便。JDBC可以完成以下三個任務(wù):同一個數(shù)據(jù)庫建立連接;向數(shù)據(jù)庫發(fā)送SQL語句;處理數(shù)據(jù)庫返回的結(jié)果。JDBC是一種底層的API,它使用語句級的方式直接調(diào)用SQL命令。可以利用JDBC與ODBC之間的橋接器方便地實現(xiàn)對Microsoft ODBC的訪問,具有平臺無關(guān)性、安全性、完整性、魯棒性等特點。二、JDBC的驅(qū)動管理器JDBC中的驅(qū)動管理器就是DriverManager類,是JDBC的管理層,它在數(shù)據(jù)庫和用戶驅(qū)動器之間工作,在數(shù)據(jù)庫和合適的驅(qū)動器之間建立連接。真正進行數(shù)據(jù)庫連接的是Driver類中的connect()方法。編程人員除了可以調(diào)用DriverManager類的
4、getConnection()方法之外,還可以調(diào)用該類的getDriver(),getDrivers(),registerDriver()等方法進一步完成程序的功能。DriverManager類維護著一系列驅(qū)動器程序Driver類,這些類是通過實現(xiàn)Java類庫中的Driver接口而得到的,這些類通過調(diào)用DriverManager類的getConnection()方法來注冊自己,然后在DriverManager類被調(diào)用時載入,而且在數(shù)據(jù)庫驅(qū)動器載入時被自動調(diào)動。調(diào)用DriverManager類的getConnection()方法是在數(shù)據(jù)庫和驅(qū)動器之間建立連接的標(biāo)準(zhǔn)方法,具體格式為String u
5、rl = jdbc:odbc:wombat;Connection con = DriverManager.getConnection( url, oboy, 12Java );三、JDBC驅(qū)動程序的類型JDBC驅(qū)動程序規(guī)范把JDBC驅(qū)動程序分為4種類型,分別應(yīng)用于某種針對DBMS(DataBase Management System)的特定需求: JDBC-ODBC驅(qū)動程序 Java/本地代碼驅(qū)動程序 Java協(xié)議被稱為“第四類數(shù)據(jù)庫協(xié)議”的純Java實現(xiàn)的JDBC驅(qū)動程序11.2使用SQL指令操作數(shù)據(jù)庫利用JDBC查詢數(shù)據(jù)庫的處理過程分下面5個步驟:載入JDBC驅(qū)動程序,連接到DBMS,創(chuàng)建
6、并執(zhí)行語句,處理DBMS返回的數(shù)據(jù),終止與DBMS的連接。一、載入JDBC驅(qū)動程序通過調(diào)用Class.forName( com.mysql.jdbc.Driver );方法,實現(xiàn)載入JDBC驅(qū)動程序。所選定的驅(qū)動程序的名稱二、連接到DBMSgetConnection()方法有三個重載體:getConnection( String url )getConnection( String url, Properties info )getConnection( String url, String user, String password )作用是請求DBMS訪問數(shù)據(jù)庫,如果訪問請求被允許將返回一
7、個Connection對象,否則該方法將拋出一個SQLException異常。執(zhí)行連接的具體形式為:String url = jdbc:mysql:/localhost:3306/graduation_design;Connection connect = DriverManager.getConnection( url );協(xié)議子協(xié)議子名稱連接池技術(shù):通常一個需要與數(shù)據(jù)庫交互的用戶必須打開一個連接,在處理過程中如果一直保持連接的話有可能會占用數(shù)據(jù)庫的連接從而影響其他用戶,如果在每次訪問數(shù)據(jù)庫之后都關(guān)閉連接而在需要時又打開連接又會消耗系統(tǒng)時間并且降低性能。JDBC 2.1版引入了連接池技術(shù)。連
8、接池就是一個數(shù)據(jù)庫連接的集合,在使用的時候只需打開一次并載入內(nèi)存即可被重復(fù)使用,既不必每次使用都重新連接DBMS也不消耗系統(tǒng)時間。三、創(chuàng)建并執(zhí)行語句在成功地連接了數(shù)據(jù)庫之后,就可以操作和查詢數(shù)據(jù)庫了。這個過程是通過Statement對象發(fā)送SQL語句返回查詢結(jié)果實現(xiàn)的。JDBC的查詢發(fā)送機制提供了三種對象來實現(xiàn)查詢語句的發(fā)送執(zhí)行,它們是Statement對象、PreparedStatement對象和CallableStatement對象。它們都可以作為執(zhí)行SQL語句的容器對象,分別用于發(fā)送不同類型的SQL語句:Statement對象用于執(zhí)行簡單的SQL語句,也就是沒有參數(shù)的SQL語句;Prep
9、aredStatement對象用于執(zhí)行需要重復(fù)執(zhí)行的預(yù)編譯過的SQL語句;CallableStatement對象用于執(zhí)行一個數(shù)據(jù)庫的存儲過程。創(chuàng)建Statement對象可以通過Connection類方法createStatement()來實現(xiàn):Statement stmt = connect.createStatement();Statement提供了三種不同的方法可以執(zhí)行SQL語句:executeQuery( String sql );/執(zhí)行給定的SQL查詢語句,返回ResultSet對象。executeUpdate( String sql );/執(zhí)行給定的SQL更新語句,返回INSERT、
10、UPDATE或DELETE語句的行計數(shù),或者返回0表示不返回任何內(nèi)容。execute( String sql ); /執(zhí)行給定的SQL查詢語句,該語句可能返回多個結(jié)果。查詢完成之后要將Statement對象關(guān)閉,形式為:stmt.close();創(chuàng)建PreparedStatement對象可以通過Connection類方法PreparedStatement來實現(xiàn):String query = SELECT * FROM namelist WHERE x=?;PreparedStatement pstmt = connect.PreparedStatement( query );使用Prepare
11、dStatement對象是為了處理預(yù)編譯的SQL語句的對象。使用PreparedStatement對象查詢的方式與使用Statement對象查詢的方式相似。創(chuàng)建CallableStatement對象可以通過Connection類方法prepareCall來實現(xiàn):String query = call getTestData(?,?);CallableStatement cstmt = connect.prepareCall( query );使用CallableStatement對象用來從J2EE對象中調(diào)用一個存儲過程。四、處理DBMS返回的數(shù)據(jù)JDBC接收查詢結(jié)果是通過ResultSet對象
12、來實現(xiàn)的,稱為結(jié)果集。一個ResultSet對象包含了執(zhí)行某個SQL查詢語句后滿足條件的所有的行,ResultSet接口中提供了對這些行的訪問方法,用戶可以通過一組get方法來訪問。可滾動結(jié)果集和可更新結(jié)果集。在處理查詢結(jié)果集的時候,經(jīng)常要用到元數(shù)據(jù)。所謂元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù)信息,包括描述數(shù)據(jù)庫的元數(shù)據(jù)和描述結(jié)果集的元數(shù)據(jù)。描述數(shù)據(jù)庫的元數(shù)據(jù)通過接口DatabaseMetaData定義,可以經(jīng)由調(diào)用Connection接口的getMetaData()方法獲取DatabaseMetaData對象,并利用接口DatabaseMetaData中的方法得到數(shù)據(jù)庫中的數(shù)據(jù)的主要信息。描述結(jié)果集的元數(shù)據(jù)通過接口ResultSetMetaData定義,可以經(jīng)由調(diào)用ResultSet接口的getMetaData()方法獲取ResultSetMetaData對象,利用接口ResultSetMetaData中的方法得到結(jié)果集中的數(shù)據(jù)的信息,有助于程序員處理數(shù)據(jù)。五、終止與DBMS的連接當(dāng)完成對數(shù)據(jù)庫的訪問之后,通過調(diào)用Connection接口的close()方法關(guān)閉Connection對象,終止與數(shù)據(jù)庫的連接,如果在關(guān)閉連接時遇到問題,該方法將會拋出一個異常。關(guān)閉與數(shù)據(jù)庫的連接時將自動關(guān)閉
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 口語交際:即席講話教學(xué)設(shè)計 人教版
- 小學(xué)語文三年級下冊《語文園地三》教案
- Unit 8 Have you read Treasure Island yet2023-2024學(xué)年八年級下冊英語閱讀素養(yǎng)小冊教學(xué)設(shè)計(人教版)
- 三角形面積(教學(xué)設(shè)計)-2023-2024學(xué)年五年級上冊數(shù)學(xué)人教版
- 小學(xué)信息技術(shù)一年級上冊 14《雙檔字符鍵練習(xí)》教案
- 2024-2025學(xué)年新教材高中政治 第2單元 人民當(dāng)家作主 第6課 第3框 基層群眾自治制度教案 部編版必修3
- 11我是一張紙 第一課時 教學(xué)設(shè)計-2023-2024學(xué)年道德與法治二年級下冊統(tǒng)編版
- 22 小毛蟲 教學(xué)設(shè)計-2023-2024學(xué)年語文二年級下冊(統(tǒng)編版)
- 13 花鐘(教學(xué)設(shè)計)
- Module 3 Unit 3教學(xué)設(shè)計 2024-2025學(xué)年英語外研版八年級上冊
- 物理化學(xué)實驗教材電子
- 護坦專項施工方案
- 承接查驗協(xié)議書
- 沖壓件常用公式及數(shù)據(jù)表
- 中國簽證邀請函模板
- 警惕‘委托代辦郵政業(yè)務(wù)’之規(guī)定被曲解與濫用
- 完整版高低壓開關(guān)柜投標(biāo)文件技術(shù)標(biāo)
- 部編語文五年級上冊習(xí)作:縮寫故事ppt課件
- 學(xué)校五好關(guān)工委方案
- 吊籃計算書(精編版)
- 基于S7200PLC的全自動洗衣機控制系統(tǒng)設(shè)計畢業(yè)設(shè)計(論文)
評論
0/150
提交評論