




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、wwwits.tzc-第10講Java數(shù)據(jù)庫訪問3Java學(xué)習(xí)目的與要求深刻理解JDBC的概念及JDBC API 主要內(nèi)容熟練掌握J(rèn) DBC應(yīng)用程序開發(fā)流程熟練掌握應(yīng)用JDBC實現(xiàn)數(shù)據(jù)庫記錄的插入.刪除和修改操作熟練掌握應(yīng)用JDBC查詢數(shù)據(jù)庫記錄JDBCv*ww.its JDBC(Java Database Connectivity)是一個獨立于特定數(shù)據(jù)庫 管理系統(tǒng)的.通用的SQL數(shù)據(jù)庫存取和操作的公共接口( 一 組API),定義了用來訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)Java類庫,使用這 個類庫可以以一種標(biāo)準(zhǔn)的方法.方便地訪問數(shù)據(jù)庫資源(在 java.sql類包中)。JDBC為訪問不同的數(shù)據(jù)庫提供了一種統(tǒng)一的
2、途徑,象 ODBC(Open Database Connectivi切一樣 # JDBC對開發(fā)者屏 蔽了一些細(xì)節(jié)問題。JDBC的目標(biāo)是使應(yīng)用程序開發(fā)人員使用JDBC可以連接任何 提供了JDBC驅(qū)動程序的數(shù)據(jù)庫系統(tǒng),這樣就使得程序員無需 對特定的數(shù)據(jù)庫系統(tǒng)的特點有過多的了解,從而大大簡化和 加快了開發(fā)過程。JDBC開放數(shù)據(jù)庫互連(ODBC )是為了實現(xiàn)異構(gòu)數(shù)據(jù)庫互連而由Microsoft公司推出的一 種標(biāo)準(zhǔn),它是一個單一的.公共的編程接口。ODBC提供不同的程序以存取不同的 數(shù)據(jù)庫,但只提供一種應(yīng)用編程接口( API )給應(yīng)用程序。應(yīng)用程瘵驅(qū)動程瘵管理器驅(qū)動程序驅(qū)動程陰驅(qū)動程序數(shù)據(jù)源 數(shù)據(jù)源 數(shù)
3、據(jù)源ODBCODBC的體系結(jié)構(gòu)含有四個部件:應(yīng)用程序(Application):執(zhí)行ODBC函數(shù)的調(diào)用 和處理,提交SQL語句并檢索結(jié)果。驅(qū)動程序管理器(Driver Manager):為應(yīng)用程 屋裝載驅(qū)動程屋。驅(qū)動程序(Driver):驅(qū)動程底是實現(xiàn)ODBC函數(shù) 調(diào)用和同數(shù)據(jù)源交互作用的動態(tài)連接庫,它執(zhí)行ODBC 函數(shù)調(diào)用,提交SQL請求到指定的數(shù)據(jù)源.并把結(jié)果 返回給應(yīng)用程瘵。如果需要,驅(qū)動程底也可改變應(yīng)用 程寤的請求,以和特定的DBMS的語法匹配。數(shù)據(jù)源(Data Source ):由用戶需要存取的數(shù)據(jù) 和與之相連的操作系統(tǒng).DBMS及存取DBMS的網(wǎng)絡(luò)平臺 組成?;A(chǔ)JDBC與ODBC
4、相類似z JDBC接口( API )也包括兩個層次:面向應(yīng)用09A1 : Java API ,抽象接口,供應(yīng)用程序開發(fā)人員使用(連 接數(shù)據(jù)庫,執(zhí)行SQL語句,獲得結(jié)果)o面向數(shù)據(jù)庫的AP : Java Driver API,供開發(fā)商開發(fā)數(shù)據(jù)庫驅(qū)動程序用。與ODBC相比f JDBC沒有了走 制的"數(shù)據(jù)源"的概念,而是直接在應(yīng)用程序中加載驅(qū)動程序并 連接特定的數(shù)據(jù) 庫。7JDBC基礎(chǔ):基本工作步驟v*ww.its Driver Manager ( java.sql.DriverManager )裝載驅(qū)動程序,管理應(yīng)用程序與驅(qū)動程序之間的連接。 Driver (由驅(qū)動程序開發(fā)商提
5、供)將應(yīng)用程序的API請求轉(zhuǎn)換為特定的數(shù)據(jù)庫請求。 Connection ( java.sql.Connection )將應(yīng)用程序連接到特定的數(shù)據(jù)庫 Statement ( java.sql.Statement )-在一個給走的連接中”用于執(zhí)行一個靜態(tài)的數(shù)據(jù)庫SQL語句。 ResultSet ( java.sql.ResultSet ) SQL語句中心完后,返回的數(shù)據(jù)結(jié)果集(包括行、列)。口 Metadata ( java.sql.DatabaseMetadata; java.sql. ResultSetMetadata )-關(guān)于查詢結(jié)果集、數(shù)據(jù)庫和驅(qū)動程序的元數(shù)據(jù)信息。v*ww.its Im
6、port the necessaiy classesLoad the JDBC driverIdentify the database source Allocate a "Connection" object (create) Allocate a "Statement" object (create) Execute a query using the "Statement" object Retrieve data from the returned “ResultSet" object Close the “Resu
7、ltset" object Close the "Statemenf, object Close the "Connection objectJDBC基礎(chǔ):基本工作步驟Link to DBResult(tuples)Result (tuples)11JDBC驅(qū)動程序v*ww.its JDBC支持四種類型的驅(qū)動程序:JDBC-ODBC Bridge, plus ODBC driver (Type 1) Simplest JDBC methods -> Translate JDBC methods to ODBC methods -> ODBC to na
8、tive methods -> Native methods APINative-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 n
9、etwork -> Native API methodsNative-protocol, pure Java driver (Type 4) Java methods > Native methods in JavaJDBC-ODBC Bridge, plus ODBC driver (Type 1)由Sim的Java2 JDK提供 (sun.jdbc.odbc.JdbcOdbcDriver)通過ODBC驅(qū)動程序來獲得對 數(shù)據(jù)庫的JDBC訪問 必須先安裝ODBC驅(qū)動程序和 配置ODBC數(shù)據(jù)源。-僅當(dāng)特定的數(shù)據(jù)庫系統(tǒng)沒有相 應(yīng)的JDBC驅(qū)動程序時使用。v*ww.its Native-
10、API, partly Java driver (Type 2) Native-API driver 將JDBC 命令轉(zhuǎn)換為特定數(shù)據(jù)庫系 統(tǒng)的本地庫方法。與Type 1相類似,必須先安 裝特定數(shù)據(jù)庫的庫方法( 二進制代碼/非Java ) 0JDBC-net, pure Java driver (Type 3)將JDBC命令轉(zhuǎn)換為與數(shù)據(jù)庫系統(tǒng) 無關(guān)的網(wǎng)絡(luò)協(xié)議,并發(fā)送給一個中 間件服務(wù)器。中間件服務(wù)器再將數(shù)據(jù)庫系統(tǒng)無關(guān) 的網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換為特定數(shù)據(jù)庫系統(tǒng) 的協(xié)議,并發(fā)送給數(shù)據(jù)庫系統(tǒng)。Middleware Space JDBC DriverProprietaryProtocolDatabase從數(shù)據(jù)庫系
11、統(tǒng)獲得的結(jié)果先發(fā)送給 中間件服務(wù)器,并進而返回給應(yīng)用 程序。15JDBC 區(qū)動程摩Native-protocol, pure Java driver (Type 4)純Java的驅(qū)動程序z直接與 特定的數(shù)據(jù)庫系統(tǒng)通信。直接將JDBC命令轉(zhuǎn)換為數(shù) 據(jù)庫系統(tǒng)的本地協(xié)議。優(yōu)點:沒有中間的轉(zhuǎn)換或者 是中間件。通常用于提高數(shù)據(jù)庫訪問的 性能。JDBC編程任何一個JDBC應(yīng)用程序,都需要以下四個步驟: 加載JDBC驅(qū)動程序 建立與數(shù)據(jù)庫的連接 進行數(shù)據(jù)庫操作 關(guān)閉相關(guān)連接17Stepl裝載驅(qū)動程序裝載驅(qū)動程序-應(yīng)用Class類的forName()方法注冊JDBC-ODBC橋驅(qū)動程序Class forNam
12、e(nsun.jdbc odbc JdbcOdbcDrivern);注冊O(shè)eule數(shù)據(jù)庫廠商提供的JDBC驅(qū)動程序Class forName ("oracle jdbc driver OracleDrivern);A建立橋接器時可能發(fā)生異常,需要捕獲這個異常Try class forName("sun jdbc odbc JdbcOdbcDriver");16Catch(ClassNotFoundEXception e) 仃Step2建立與數(shù)據(jù)庫的連接利用DriverManager類的靜態(tài)方法getCoimection()來獲得與 特定數(shù)據(jù)庫的連接實例(Conne
13、ction實例)o/ Connection conn = DriverManager.getConnection(url);/ Connection conn = DriverManager.getConnection(url, user, pass);這三個參數(shù)都是SWng類型的,使用不同的驅(qū)動程序與不 同的數(shù)據(jù)庫建立連接時小H的內(nèi)容是不同的,但其格式是一 致的,都包括三個部分:jdbctdriverTypetdataSource對于JDBGODBC Bridge f driverType為odbc, dataSource 為ODBC數(shù)據(jù)源:jdbc:odbc:myDSN=對于其他類型的驅(qū)動
14、程序,根據(jù)數(shù)據(jù)庫系統(tǒng)的不同 driverTypeUdataSource有不同的格式和內(nèi)容。Step3進行數(shù)據(jù)庫操作每執(zhí)行條SQL語句,都需要禾I用Connetcion實例的 createStatement()方法來創(chuàng)建一個Statement實例。Statement的 常用方法包括:執(zhí)行SQL INSERT, UPDATE 或 DELETE 等語句 int executeUpdate(String sql)執(zhí)行SQL SELECT語句 ResultSet executeQuery(String sql)執(zhí)行一個可能返回多個結(jié)果的SQL語句boolean execute(Stringsql)(與其
15、他方法結(jié)合起來來獲得結(jié)果) Statement中還有其他的方法來執(zhí)行SQL語句。仃Step4 :進行數(shù)據(jù)庫操作v*ww.its 通過ResultSet來獲得查詢結(jié)果:ResultSef實例最初定位在結(jié)果集的第一行(記錄)ResultSet提供了一些在結(jié)果集中定位的方法,如next()等。ResultSef提供了一些方法來獲得當(dāng)前行中的不同字段的 值,getXXX()0ResultSet中還提供了有關(guān)方法,來修改結(jié)果集,并提交到數(shù) 據(jù)庫中去。23ResultSet 用 getXXX 方法返冋值類型方法名稱boolea ngetBoolea n()bytegetByte()bytegetBytes
16、()java.sql. DategetDate()doublegetDouble()floatgetFloat()intgetlnt()longgetLong()ObjectgetObject()shortgetShort()javaan g.Stri nggetString()java.sql.TimegetTime()參數(shù):int collndex或String colName25Step4 :進行數(shù)據(jù)庫操作v*ww.its 通過ResultSetMetadata來獲得查詢結(jié)果的元數(shù)據(jù)信息:Re suits ef提供了 一個方法getMeta data ()來獲得結(jié)果集的 元數(shù)據(jù)信息,它返
17、回的是一個ResultSefMe怕data實例。通jSResultSetMetadata實例z就可以獲得結(jié)果集中字段的詳細(xì)信息z如字段總數(shù),每個字段的名稱、類型等。 getColumnCount() / # of columns in the row getColumnName( z) / returns column name getColumnTjqpe (/)/ returns column data type getColumnLabel (z) /suggested label for a column when print getTableName() /returns the n
18、ame of the table確定了字段類型,獲取字段數(shù)據(jù)時,就可以明確如何使 用 ResultSet 中的 getXXX ()方法了。27通過DatabaseMetadata來獲得數(shù)據(jù)庫的元數(shù)據(jù)信息:Connection提供了 一個方法getMetadata(侏獲得數(shù)據(jù)庫的 元數(shù)據(jù)信息,它返回的是一個DafabaseMetadata實例。通過DatabaseMetadata實例,就可以獲得數(shù)據(jù)庫的各種 信息,如數(shù)據(jù)庫廠商信息、版本信息、數(shù)據(jù)表數(shù)目、每 個數(shù)據(jù)表名稱等。 getDatabaseProductNameO getDatabaseProductVersion() getDriver
19、Name() getTablesQJDBC示例【例1】使用Access數(shù)據(jù)庫創(chuàng)建student數(shù)據(jù)庫及表。-創(chuàng)建數(shù)據(jù)庫-創(chuàng)建Access數(shù)據(jù)庫文件,數(shù)據(jù)庫文件名為student.mdbo_創(chuàng)建表-輸入數(shù)據(jù)配置ODBC數(shù)據(jù)源1)打開控制面板,選擇ODBCI頁2)選擇Add3)選桂Microsoft Access Driver.(若沒有此I頁,應(yīng)先安裝ODBC驅(qū)動 程席)4)栓Data Source Name項中填入數(shù)據(jù)源名,以后對此數(shù)據(jù)源的引 用要通過數(shù)據(jù)源名來實現(xiàn)最后按ok完成操作.29v*ww.its 例2】JDBC插入.修改和刪除數(shù)據(jù)庫數(shù)據(jù)提示:_省如據(jù)庫建立連接_所有JDBC程序的蔓二驢是與數(shù)據(jù)庫建立連接用戶將得到_個java.sql.connection 類的對象。- Connection coni = DriverManager.getConnection (njdbc:odbc:n+datasource);- 加載驅(qū)動程序一Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");- S
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于Kano模型的太原市社區(qū)嵌入式養(yǎng)老服務(wù)需求研究
- 幼兒園美術(shù)小蝸牛說課
- 皮革鞣制轉(zhuǎn)鼓控制及監(jiān)控系統(tǒng)設(shè)計
- 2024年中華全國總工會事業(yè)單位招聘筆試真題
- 高血壓中、低危組人群的中醫(yī)證候特征研究
- 2024年合肥市肥東縣事業(yè)單位招聘筆試真題
- 幼兒園合伙協(xié)議書模板
- 行業(yè)企業(yè)管理分享
- 支部標(biāo)準(zhǔn)化建設(shè)工作總結(jié)
- 2025年度酒類企業(yè)品牌授權(quán)與區(qū)域市場代理合同
- 新疆事業(yè)單位開展招聘考試試卷及答案2022
- 第六章質(zhì)量和密度-基礎(chǔ)練(原卷版)
- GB/T 19413-2024數(shù)據(jù)中心和通信機房用空氣調(diào)節(jié)機組
- 汽車租賃項目投標(biāo)書
- 《稅收負(fù)擔(dān)對我國制造業(yè)資本金融化的影響研究》
- 2024年四川省公務(wù)員錄用考試《行測》真題及答案解析
- 卷揚機使用施工方案
- 現(xiàn)代家政導(dǎo)論-課件 5.1.3家庭管家
- 醫(yī)院感染暴發(fā)及處理課件
- 中國古典園林史復(fù)習(xí)
- 32個管理學(xué)經(jīng)典理論
評論
0/150
提交評論