電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java11ppt_第1頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java11ppt_第2頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java11ppt_第3頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java11ppt_第4頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java11ppt_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論