Java數(shù)據(jù)庫(kù)訪問(wèn)課件_第1頁(yè)
Java數(shù)據(jù)庫(kù)訪問(wèn)課件_第2頁(yè)
Java數(shù)據(jù)庫(kù)訪問(wèn)課件_第3頁(yè)
Java數(shù)據(jù)庫(kù)訪問(wèn)課件_第4頁(yè)
Java數(shù)據(jù)庫(kù)訪問(wèn)課件_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第10講Java數(shù)據(jù)庫(kù)訪問(wèn)深刻理解JDBC的概念及JDBCAPI主要內(nèi)容熟練掌握J(rèn)DBC應(yīng)用程序開(kāi)發(fā)流程熟練掌握應(yīng)用JDBC實(shí)現(xiàn)數(shù)據(jù)庫(kù)記錄的插入、刪除和修改操作熟練掌握應(yīng)用JDBC查詢數(shù)據(jù)庫(kù)記錄學(xué)習(xí)目的與要求JDBC ——基礎(chǔ)JDBC(JavaDatabaseConnectivity)是一個(gè)獨(dú)立于特定數(shù)據(jù)庫(kù)管理系統(tǒng)的、通用的SQL數(shù)據(jù)庫(kù)存取和操作的公共接口(一組API),定義了用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)Java類庫(kù),使用這個(gè)類庫(kù)可以以一種標(biāo)準(zhǔn)的方法、方便地訪問(wèn)數(shù)據(jù)庫(kù)資源(在java.sql類包中)。JDBC為訪問(wèn)不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的途徑,象ODBC(OpenDatabaseConnectivity)一樣,JDBC對(duì)開(kāi)發(fā)者屏蔽了一些細(xì)節(jié)問(wèn)題。JDBC的目標(biāo)是使應(yīng)用程序開(kāi)發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)系統(tǒng),這樣就使得程序員無(wú)需對(duì)特定的數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)有過(guò)多的了解,從而大大簡(jiǎn)化和加快了開(kāi)發(fā)過(guò)程。JDBC ——基礎(chǔ)與ODBC相類似,JDBC接口(API)也包括兩個(gè)層次:

面向應(yīng)用的API:JavaAPI,抽象接口,供應(yīng)用程序開(kāi)發(fā)人員使用(連接數(shù)據(jù)庫(kù),執(zhí)行SQL語(yǔ)句,獲得結(jié)果)。

面向數(shù)據(jù)庫(kù)的API:JavaDriverAPI,供開(kāi)發(fā)商開(kāi)發(fā)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序用。與ODBC相比,JDBC沒(méi)有了定制的“數(shù)據(jù)源”的概念,而是直接在應(yīng)用程序中加載驅(qū)動(dòng)程序并連接特定的數(shù)據(jù)庫(kù)。DriverManager(java.sql.DriverManager)裝載驅(qū)動(dòng)程序,管理應(yīng)用程序與驅(qū)動(dòng)程序之間的連接。Driver(由驅(qū)動(dòng)程序開(kāi)發(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è)給定的連接中,用于執(zhí)行一個(gè)靜態(tài)的數(shù)據(jù)庫(kù)SQL語(yǔ)句。

ResultSet(java.sql.ResultSet)SQL語(yǔ)句中心完后,返回的數(shù)據(jù)結(jié)果集(包括行、列)。Metadata(java.sql.DatabaseMetadata;java.sql.ResultSetMetadata)關(guān)于查詢結(jié)果集、數(shù)據(jù)庫(kù)和驅(qū)動(dòng)程序的元數(shù)據(jù)信息。JDBC ——基礎(chǔ):主要概念JDBC ——基礎(chǔ):基本工作步驟ImportthenecessaryclassesLoadtheJDBCdriverIdentifythedatabasesourceAllocatea“Connection”object(create)Allocatea“Statement”object(create)Executeaqueryusingthe“Statement”objectRetrievedatafromthereturned“ResultSet”objectClosethe“ResultSet”objectClosethe“Statement”objectClosethe“Connection”objectJDBC ——基礎(chǔ):基本工作步驟1.LoadtheJDBCdriverclass:

Class.forName(“driverName”);2.Openadatabaseconnection:

DriverManager.getConnection (“jdbc:xxx:datasource”);3.IssueSQLstatements:

stmt=con.createStatement(); stmt.executeQuery(“Select*frommyTable”);4.Processresultset:

while(rs.next()){ name=rs.getString(“name”); amount=rs.getInt(“amt”);}ConnectionStatementResultSetDriverDriverManagerDatabaseJDBC支持四種類型的驅(qū)動(dòng)程序:JDBC-ODBCBridge,plusODBCdriver(Type1)SimplestJDBCmethods->TranslateJDBCmethodstoODBCmethods->ODBCtonativemethods->NativemethodsAPINative-API,partlyJavadriver(Type2)JDBCmethods->MapJDBCmethodstonativemethods(callstovendorlibrary)->NativemethodsAPI(vendorlibrary)JDBC-net,pureJavadriver(Type3)JDBCmethods->TranslatetoNativeAPImethodsthroughTCP/IPnetwork->NativeAPImethodsNative-protocol,pureJavadriver(Type4)Javamethods->NativemethodsinJavaJDBC ——驅(qū)動(dòng)程序JDBC ——驅(qū)動(dòng)程序JDBC-ODBCBridge,plusODBCdriver(Type1)由Sun的Java2JDK提供(sun.jdbc.odbc.JdbcOdbcDriver)通過(guò)ODBC驅(qū)動(dòng)程序來(lái)獲得對(duì)數(shù)據(jù)庫(kù)的JDBC訪問(wèn)必須先安裝ODBC驅(qū)動(dòng)程序和配置ODBC數(shù)據(jù)源。僅當(dāng)特定的數(shù)據(jù)庫(kù)系統(tǒng)沒(méi)有相應(yīng)的JDBC驅(qū)動(dòng)程序時(shí)使用。ApplicationSpaceJavaApplicationJDBC–ODBCBridgeDatabaseSQLCommandResultSetODBCDriverProprietaryProtocolJDBC ——驅(qū)動(dòng)程序JDBC-net,pureJavadriver(Type3)將JDBC命令轉(zhuǎn)換為與數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān)的網(wǎng)絡(luò)協(xié)議,并發(fā)送給一個(gè)中間件服務(wù)器。中間件服務(wù)器再將數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān)的網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換為特定數(shù)據(jù)庫(kù)系統(tǒng)的協(xié)議,并發(fā)送給數(shù)據(jù)庫(kù)系統(tǒng)。從數(shù)據(jù)庫(kù)系統(tǒng)獲得的結(jié)果先發(fā)送給中間件服務(wù)器,并進(jìn)而返回給應(yīng)用程序。ApplicationSpaceJavaApplicationType3JDBCDriverDatabaseSQLCommandResultSetMiddlewareSpaceProprietaryProtocolJDBCDriverNative-protocol,pureJavadriver(Type4)純Java的驅(qū)動(dòng)程序,直接與特定的數(shù)據(jù)庫(kù)系統(tǒng)通信。直接將JDBC命令轉(zhuǎn)換為數(shù)據(jù)庫(kù)系統(tǒng)的本地協(xié)議。優(yōu)點(diǎn):沒(méi)有中間的轉(zhuǎn)換或者是中間件。通常用于提高數(shù)據(jù)庫(kù)訪問(wèn)的性能。ApplicationSpaceJavaApplicationType4JDBCDriverDatabaseSQLCommand

UsingProprietary

ProtocolResultSet

UsingProprietary

ProtocolJDBC ——驅(qū)動(dòng)程序JDBC ——編程任何一個(gè)JDBC應(yīng)用程序,都需要以下四個(gè)步驟:

加載JDBC驅(qū)動(dòng)程序建立與數(shù)據(jù)庫(kù)的連接進(jìn)行數(shù)據(jù)庫(kù)操作關(guān)閉相關(guān)連接利用DriverManager類的靜態(tài)方法getConnection()來(lái)獲得與特定數(shù)據(jù)庫(kù)的連接實(shí)例(Connection實(shí)例)。Connectionconn=DriverManager.getConnection(url);Connectionconn=DriverManager.getConnection(url,user,pass);

這三個(gè)參數(shù)都是String類型的,使用不同的驅(qū)動(dòng)程序與不同的數(shù)據(jù)庫(kù)建立連接時(shí),url的內(nèi)容是不同的,但其格式是一致的,都包括三個(gè)部分:jdbc:driverType:dataSource

對(duì)于JDBC-ODBCBridge,driverType為odbc,dataSource則為ODBC數(shù)據(jù)源:“jdbc:odbc:myDSN”。對(duì)于其他類型的驅(qū)動(dòng)程序,根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)的不同driverType和dataSource有不同的格式和內(nèi)容。Step2建立與數(shù)據(jù)庫(kù)的連接Step3進(jìn)行數(shù)據(jù)庫(kù)操作每執(zhí)行一條SQL語(yǔ)句,都需要利用Connetcion實(shí)例的createStatement()方法來(lái)創(chuàng)建一個(gè)Statement實(shí)例。Statement的常用方法包括:執(zhí)行SQLINSERT,UPDATE或DELETE等語(yǔ)句int

executeUpdate(String

sql)執(zhí)行SQLSELECT語(yǔ)句ResultSet

executeQuery(String

sql)執(zhí)行一個(gè)可能返回多個(gè)結(jié)果的SQL語(yǔ)句boolean

execute(Stringsql)(與其他方法結(jié)合起來(lái)來(lái)獲得結(jié)果)Statement

中還有其他的方法來(lái)執(zhí)行SQL語(yǔ)句。Step4:進(jìn)行數(shù)據(jù)庫(kù)操作通過(guò)ResultSet來(lái)獲得查詢結(jié)果:ResultSet實(shí)例最初定位在結(jié)果集的第一行(記錄)ResultSet提供了一些在結(jié)果集中定位的方法,如next()等。ResultSet提供了一些方法來(lái)獲得當(dāng)前行中的不同字段的值,getXXX()。ResultSet中還提供了有關(guān)方法,來(lái)修改結(jié)果集,并提交到數(shù)據(jù)庫(kù)中去。Step4:進(jìn)行數(shù)據(jù)庫(kù)操作通過(guò)ResultSetMetadata來(lái)獲得查詢結(jié)果的元數(shù)據(jù)信息:ResultSet提供了一個(gè)方法getMetadata()來(lái)獲得結(jié)果集的元數(shù)據(jù)信息,它返回的是一個(gè)ResultSetMetadata實(shí)例。通過(guò)ResultSetMetadata實(shí)例,就可以獲得結(jié)果集中字段的詳細(xì)信息,如字段總數(shù),每個(gè)字段的名稱、類型等。getColumnCount()//#ofcolumnsintherowgetColumnName(i)//returnscolumnnamegetColumnType(i)//returnscolumndatatypegetColumnLabel(i)//suggestedlabelforacolumnwhenprintgetTableName()//returnsthenameofthetable確定了字段類型,獲取字段數(shù)據(jù)時(shí),就可以明確如何使用ResultSet中的getXXX()方法了。通過(guò)DatabaseMetadata來(lái)獲得數(shù)據(jù)庫(kù)的元數(shù)據(jù)信息:Connection提供了一個(gè)方法getMetadata()來(lái)獲得數(shù)據(jù)庫(kù)的元數(shù)據(jù)信息,它返回的是一個(gè)DatabaseMetadata實(shí)例。通過(guò)DatabaseMetadata實(shí)例,就可以獲得數(shù)據(jù)庫(kù)的各種信息,如數(shù)據(jù)庫(kù)廠商信息、版本信息、數(shù)據(jù)表數(shù)目、每個(gè)數(shù)據(jù)表名稱等。getDatabaseProductName()getDatabaseProductVersion()getDriverName()getTables()Step4:進(jìn)行數(shù)據(jù)庫(kù)操作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.mdb。創(chuàng)建表輸入數(shù)據(jù)配置ODBC數(shù)據(jù)源

1)打

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論