【學(xué)習(xí)課件】第10講Java數(shù)據(jù)庫(kù)訪問
《【學(xué)習(xí)課件】第10講Java數(shù)據(jù)庫(kù)訪問》由會(huì)員分享,可在線閱讀,更多相關(guān)《【學(xué)習(xí)課件】第10講Java數(shù)據(jù)庫(kù)訪問(32頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、wwwits.tzc- 第10講Java數(shù)據(jù)庫(kù)訪問 3 Java 學(xué)習(xí)目的與要求 □深刻理解JDBC的概念及JDBC API 主要內(nèi)容 □熟練掌握J(rèn) DBC應(yīng)用程序開發(fā)流程 □熟練掌握應(yīng)用JDBC實(shí)現(xiàn)數(shù)據(jù)庫(kù)記錄 的插入.刪除和修改操作 □熟練掌握應(yīng)用JDBC查詢數(shù)據(jù)庫(kù)記錄 JDBC v*ww.its JDBC(Java Database Connectivity)是一個(gè)獨(dú)立于特定數(shù)據(jù)庫(kù) 管理系統(tǒng)的.通用的SQL數(shù)據(jù)庫(kù)存取和操作的公共接口( 一
2、 組API),定義了用來訪問數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)Java類庫(kù),使用這 個(gè)類庫(kù)可以以一種標(biāo)準(zhǔn)的方法.方便地訪問數(shù)據(jù)庫(kù)資源(在 java.sql類包中)。 JDBC為訪問不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的途徑,象 ODBC(Open Database Connectivi切一樣 # JDBC對(duì)開發(fā)者屏 蔽了一些細(xì)節(jié)問題。 JDBC的目標(biāo)是使應(yīng)用程序開發(fā)人員使用JDBC可以連接任何 提供了JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)系統(tǒng),這樣就使得程序員無需 對(duì)特定的數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)有過多的了解,從而大大簡(jiǎn)化和 加快了開發(fā)過程。 JDBC 開放數(shù)據(jù)庫(kù)互連(ODBC )是為了實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)互連而由Microsoft公司推
3、出的一 種標(biāo)準(zhǔn),它是一個(gè)單一的.公共的編程接口。ODBC提供不同的程序以存取不同的 數(shù)據(jù)庫(kù),但只提供一種應(yīng)用編程接口( API )給應(yīng)用程序。 應(yīng)用程瘵 驅(qū)動(dòng)程瘵管理器 驅(qū)動(dòng)程序 驅(qū)動(dòng)程陰 驅(qū)動(dòng)程序 數(shù)據(jù)源 數(shù)據(jù)源 數(shù)據(jù)源 ODBC ODBC的體系結(jié)構(gòu)含有四個(gè)部件: 應(yīng)用程序(Application):執(zhí)行ODBC函數(shù)的調(diào)用 和處理,提交SQL語句并檢索結(jié)果。 驅(qū)動(dòng)程序管理器(Driver Manager):為應(yīng)用程 屋裝載驅(qū)動(dòng)程屋。 驅(qū)動(dòng)程序(Driver):驅(qū)動(dòng)程底是實(shí)現(xiàn)ODBC函數(shù) 調(diào)用和同數(shù)據(jù)源交互作用的動(dòng)態(tài)連接庫(kù),它執(zhí)行ODBC 函數(shù)調(diào)用,提交SQL請(qǐng)求到指
4、定的數(shù)據(jù)源.并把結(jié)果 返回給應(yīng)用程瘵。如果需要,驅(qū)動(dòng)程底也可改變應(yīng)用 程寤的請(qǐng)求,以和特定的DBMS的語法匹配。 數(shù)據(jù)源(Data Source ):由用戶需要存取的數(shù)據(jù) 和與之相連的操作系統(tǒng).DBMS及存取DBMS的網(wǎng)絡(luò)平臺(tái) 組成。 基礎(chǔ) JDBC 與ODBC相類似z JDBC接口( API )也包括兩個(gè)層次: ■面向應(yīng)用09A1 : Java API ,抽象接口,供應(yīng)用程序開發(fā)人員使用(連 接數(shù)據(jù)庫(kù),執(zhí)行SQL語句,獲得結(jié)果)o ■面向數(shù)據(jù)庫(kù)的AP : Java Driver API,供開發(fā)商開發(fā)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序用。 與ODBC相比f JDBC沒有了走 制的"
5、數(shù)據(jù)源" 的概念,而是直 接在應(yīng)用程序中 加載驅(qū)動(dòng)程序并 連接特定的數(shù)據(jù) 庫(kù)。 7 JDBC 基礎(chǔ):基本工作步驟 v*ww.its □ Driver Manager ( java.sql.DriverManager ) ■裝載驅(qū)動(dòng)程序,管理應(yīng)用程序與驅(qū)動(dòng)程序之間的連接。 □ Driver (由驅(qū)動(dòng)程序開發(fā)商提供) ■將應(yīng)用程序的API請(qǐng)求轉(zhuǎn)換為特定的數(shù)據(jù)庫(kù)請(qǐng)求。 □ Connection ( java.sql.Connection ) ■將應(yīng)用程序連接到特定的數(shù)據(jù)庫(kù) □ Statement ( java.sql.Statement ) -在一個(gè)給
6、走的連接中”用于執(zhí)行一個(gè)靜態(tài)的數(shù)據(jù)庫(kù)SQL語句。 □ ResultSet ( java.sql.ResultSet ) ■ SQL語句中心完后,返回的數(shù)據(jù)結(jié)果集(包括行、列)。 口 Metadata ( java.sql.DatabaseMetadata; java.sql. ResultSetMetadata ) -關(guān)于查詢結(jié)果集、數(shù)據(jù)庫(kù)和驅(qū)動(dòng)程序的元數(shù)據(jù)信息。 v*ww.its Import the necessaiy classes Load the JDBC driver Identify the database source Allocate a "Co
7、nnection" object (create) Allocate a "Statement" object (create) Execute a query using the "Statement" object Retrieve data from the returned “ResultSet" object Close the “Resultset" object Close the "Statemenf, object Close the "Connection^ object JDB
8、C 基礎(chǔ):基本工作步驟 Link to DB Result (tuples) Result (tuples) 11 JDBC 驅(qū)動(dòng)程序 v*ww.its JDBC支持四種類型的驅(qū)動(dòng)程序: JDBC-ODBC Bridge, plus ODBC driver (Type 1) ■ Simplest ■ JDBC methods -> Translate JDBC methods to ODBC methods -> ODBC to native methods -> Native methods API Nati
9、ve-API, partly Java driver (Type 2) ■ JDBC methods -> Map JDBC methods to native methods (calls to vendor libraiy)?> Native methods API (vendor libraiy) JDBC-net, pure Java driver (Type 3) ■ JDBC methods -> Translate to Native API methods tlu*ough TCP/IP network -> Native API methods
10、 Native-protocol, pure Java driver (Type 4) ■ Java methods ?> Native methods in Java JDBC-ODBC Bridge, plus ODBC driver (Type 1) ■由Sim的Java2 JDK提供 (sun.jdbc.odbc.JdbcOdbcDriver) ■通過ODBC驅(qū)動(dòng)程序來獲得對(duì) 數(shù)據(jù)庫(kù)的JDBC訪問 必須先安裝ODBC驅(qū)動(dòng)程序和 配置ODBC數(shù)據(jù)源。 -僅當(dāng)特定的數(shù)據(jù)庫(kù)系統(tǒng)沒有相 應(yīng)的JDBC驅(qū)動(dòng)程序時(shí)使用。 v*ww.its Native-API, partl
11、y Java driver (Type 2) ■ Native-API driver 將JDBC 命令轉(zhuǎn)換為特定數(shù)據(jù)庫(kù)系 統(tǒng)的本地庫(kù)方法。 ■與Type 1相類似,必須先安 裝特定數(shù)據(jù)庫(kù)的庫(kù)方法( 二進(jìn)制代碼/非Java ) 0 JDBC-net, pure Java driver (Type 3) ■將JDBC命令轉(zhuǎn)換為與數(shù)據(jù)庫(kù)系統(tǒng) 無關(guān)的網(wǎng)絡(luò)協(xié)議,并發(fā)送給一個(gè)中 間件服務(wù)器。 ■中間件服務(wù)器再將數(shù)據(jù)庫(kù)系統(tǒng)無關(guān) 的網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換為特定數(shù)據(jù)庫(kù)系統(tǒng) 的協(xié)議,并發(fā)送給數(shù)據(jù)庫(kù)系統(tǒng)。 Middleware Space JDBC Driver Proprietary Protocol
12、Database 從數(shù)據(jù)庫(kù)系統(tǒng)獲得的結(jié)果先發(fā)送給 中間件服務(wù)器,并進(jìn)而返回給應(yīng)用 程序。 15 JDBC —區(qū)動(dòng)程摩 Native-protocol, pure Java driver (Type 4) ■純Java的驅(qū)動(dòng)程序z直接與 特定的數(shù)據(jù)庫(kù)系統(tǒng)通信。 ■直接將JDBC命令轉(zhuǎn)換為數(shù) 據(jù)庫(kù)系統(tǒng)的本地協(xié)議。 優(yōu)點(diǎn):沒有中間的轉(zhuǎn)換或者 是中間件。 ■通常用于提高數(shù)據(jù)庫(kù)訪問的 性能。 JDBC ——編程 任何一個(gè)JDBC應(yīng)用程序,都需要以下四個(gè)步驟: 加載JDBC驅(qū)動(dòng)程序 建立與數(shù)據(jù)庫(kù)的連接 進(jìn)行數(shù)據(jù)庫(kù)操作 關(guān)閉相關(guān)連接 17 Stepl——裝載驅(qū)
13、動(dòng)程序 ?裝載驅(qū)動(dòng)程序 -應(yīng)用Class類的forName()方法注冊(cè)JDBC-ODBC橋驅(qū)動(dòng)程序 Class ? forName(nsun.jdbc ? odbc ? JdbcOdbcDrivern); 注冊(cè)O(shè)eule數(shù)據(jù)庫(kù)廠商提供的JDBC驅(qū)動(dòng)程序 Class ? forName ("oracle? jdbc? driver? OracleDrivern); A建立橋接器時(shí)可能發(fā)生異常,需要捕獲這個(gè)異常 Try { class ? forName("sun ? jdbc ? odbc ? JdbcOdbcDriver"); 16 }
14、Catch(ClassNotFoundEXception e) {} 仃 Step2建立與數(shù)據(jù)庫(kù)的連接 利用DriverManager類的靜態(tài)方法getCoimection()來獲得與 特定數(shù)據(jù)庫(kù)的連接實(shí)例(Connection實(shí)例)o / Connection conn = DriverManager.getConnection(url); / Connection conn = DriverManager.getConnection(url, user, pass); 這三個(gè)參數(shù)都是SWng類型的,使用不同的驅(qū)動(dòng)程序與不 同的數(shù)據(jù)庫(kù)建立連接時(shí)小H的內(nèi)容是不同的,但其
15、格式是一 致的,都包括三個(gè)部分: jdbctdriverTypetdataSource 對(duì)于JDBGODBC Bridge f driverType為odbc, dataSource^] 為ODBC數(shù)據(jù)源:〃jdbc:odbc:myDSN= 對(duì)于其他類型的驅(qū)動(dòng)程序,根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)的不同 driverType^UdataSource有不同的格式和內(nèi)容。 Step3進(jìn)行數(shù)據(jù)庫(kù)操作 每執(zhí)行—條SQL語句,都需要禾I」用Connetcion實(shí)例的 createStatement()方法來創(chuàng)建一個(gè)Statement實(shí)例。Statement的 常用方法包括: 執(zhí)行SQL INSERT, U
16、PDATE 或 DELETE 等語句 ■ int executeUpdate(String sql) 執(zhí)行SQL SELECT語句 ■ ResultSet executeQuery(String sql) 執(zhí)行一個(gè)可能返回多個(gè)結(jié)果的SQL語句 boolean execute(Stringsql)(與其他方法結(jié)合起來來獲得結(jié)果) Statement中還有其他的方法來執(zhí)行SQL語句。 仃 Step4 :進(jìn)行數(shù)據(jù)庫(kù)操作 v*ww.its 通過ResultSet來獲得查詢結(jié)果: ResultSef實(shí)例最初定位在結(jié)果集的第一行(記錄) ResultSet提供了一些在結(jié)果集
17、中定位的方法,如next()等。 ResultSef提供了一些方法來獲得當(dāng)前行中的不同字段的 值,getXXX()0 ResultSet中還提供了有關(guān)方法,來修改結(jié)果集,并提交到數(shù) 據(jù)庫(kù)中去。 23 ResultSet^ 用 getXXX 方法 返冋值類型 方法名稱■ boolea n getBoolea n() byte getByte() byte[] getBytes() java.sql. Date getDate() double getDouble() float getFloat() int getlnt() long getL
18、ong() Object getObject() short getShort() java」an g.Stri ng getString() java.sql.Time getTime() 參數(shù): int collndex 或 String colName 25 Step4 :進(jìn)行數(shù)據(jù)庫(kù)操作 v*ww.its 通過ResultSetMetadata來獲得查詢結(jié)果的元數(shù)據(jù)信息: Re suits ef提供了 一個(gè)方法getMeta data ()來獲得結(jié)果集的
19、 元數(shù)據(jù)信息,它返回的是一個(gè)ResultSefMe怕data實(shí)例。 ■通jSResultSetMetadata實(shí)例z就可以獲得結(jié)果集中字段 的詳細(xì)信息z如字段總數(shù),每個(gè)字段的名稱、類型等。 ? getColumnCount() // # of columns in the row ? getColumnName( z) // returns column name ? getColumnTjqpe (/) // returns column data type ? getColumnLabel (z) //suggested label for a column when prin
20、t ? getTableName() //returns the name of the table 確定了字段類型,獲取字段數(shù)據(jù)時(shí),就可以明確如何使 用 ResultSet 中的 getXXX ()方法了。 27 通過DatabaseMetadata來獲得數(shù)據(jù)庫(kù)的元數(shù)據(jù)信息: Connection提供了 一個(gè)方法getMetadata(侏獲得數(shù)據(jù)庫(kù)的 元數(shù)據(jù)信息,它返回的是一個(gè)DafabaseMetadata實(shí)例。 通過DatabaseMetadata實(shí)例,就可以獲得數(shù)據(jù)庫(kù)的各種 信息,如數(shù)據(jù)庫(kù)廠商信息、版本信息、數(shù)據(jù)表數(shù)目、每 個(gè)數(shù)據(jù)表名稱等。 ? getDataba
21、seProductNameO ? getDatabaseProductVersion() ? getDriverName() ? getTablesQ JDBC ——示例 ?【例1】使用Access數(shù)據(jù)庫(kù)創(chuàng)建student數(shù)據(jù)庫(kù)及表。 -創(chuàng)建數(shù)據(jù)庫(kù) -創(chuàng)建Access數(shù)據(jù)庫(kù)文件,數(shù)據(jù)庫(kù)文件名為student.mdbo _創(chuàng)建表 -輸入數(shù)據(jù) ■配置ODBC數(shù)據(jù)源 1) 打開控制面板,選擇ODBCI頁 2) 選擇Add 3) 選桂Microsoft Access Driver.(若沒有此I頁,應(yīng)先安裝ODBC驅(qū)動(dòng) 程席) 4) 栓Data Source Name—項(xiàng)
22、中填入數(shù)據(jù)源名,以后對(duì)此數(shù)據(jù)源的引 用要通過數(shù)據(jù)源名來實(shí)現(xiàn)?最后按ok完成操作. 29 v*ww.its [例2】JDBC插入.修改和刪除數(shù)據(jù)庫(kù)數(shù)據(jù) 提示: _省如據(jù)庫(kù)建立連接 _ 所有JDBC程序的蔓二驢是與數(shù)據(jù)庫(kù)建立連接?用戶將得到_個(gè) java.sql.connection 類的對(duì)象。 - Connection coni = DriverManager.getConnection (njdbc:odbc:n+datasource); - 加載驅(qū)動(dòng)程序 一 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver&quo
23、t;); - Statement對(duì)象調(diào)用方法: 一 public int executellpdate(String sqIStatement) -添加 一 executellpdate(uinsert into tablel values(m','33',60)”); -刪除 一 executellpdate(udelete from tablel set 學(xué)號(hào)='88' -更新 -executeUpdate(uupdate tablel set 數(shù)學(xué)=88 where 姓名王名,”); # www.irs.tzc edu.
24、crvdefau一一t.hrm m^ffiMlw口fift肅 MaJDBC幕幕|帖常麗霽輜符專蘿1=|9 java.sqLconneaion^ss^o connection con」H DriverManager.gefconnection (二jdbaodbc=+das-sou「cer Qass.forName (二 sumjdbc.odbc.JdbcodbcDnven:); ss-temensgB^a才m- pub-ic inf execuCDupdate(smng sq-sartement) 暫tJ execuoupdao(二 nsert ino5rb-e1 va-ues(?111<33「60r); execuoupdaoude-eofroms-b-e—XS2.唯如兒 88!)八 1 execuoupdaCDppdaosrb-el S2.^4JIH88 wheresMH.HHM、=「
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)英語上冊(cè)-Unit5-Dinner-is-ready-課件1-人教PEP
- 供應(yīng)鏈金融知識(shí)宣教
- 一節(jié)自然地理要素變化與環(huán)境變遷市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 特發(fā)脊柱側(cè)凸分型與治療
- 醫(yī)院護(hù)理禮儀培訓(xùn)
- 京東供應(yīng)鏈金融分析
- 高中歷史必修二第6課課件
- 冀教版二年級(jí)上冊(cè)雨后課件1市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 美育和復(fù)習(xí)題市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 物態(tài)變化復(fù)習(xí)-優(yōu)秀課件
- 四年級(jí)下冊(cè)語文課件納米技術(shù)就在我們身邊部編版
- 茅臺(tái)白金酒營(yíng)銷推廣招商方案
- 物態(tài)變化復(fù)習(xí)市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 四年級(jí)下-擺蘇教版-課件
- 八年級(jí)仁愛版上冊(cè)Unit3Topic1SectionB