web程序設(shè)計課件CH5Web數(shù)據(jù)庫程序設(shè)計_第1頁
web程序設(shè)計課件CH5Web數(shù)據(jù)庫程序設(shè)計_第2頁
web程序設(shè)計課件CH5Web數(shù)據(jù)庫程序設(shè)計_第3頁
web程序設(shè)計課件CH5Web數(shù)據(jù)庫程序設(shè)計_第4頁
web程序設(shè)計課件CH5Web數(shù)據(jù)庫程序設(shè)計_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第5章 Web數(shù)據(jù)庫程序設(shè)計,1 Web數(shù)據(jù)庫訪問技術(shù) 2 ODBC接口 3 數(shù)據(jù)庫語言SQL 4 使用ADO訪問數(shù)據(jù)庫 5 用Connection對象連接數(shù)據(jù)庫 6 用RecordSet對象控制數(shù)據(jù) 7 用Command對象執(zhí)行數(shù)據(jù)庫操作 8 程序設(shè)計舉例,數(shù)據(jù)庫應(yīng)用系統(tǒng)在現(xiàn)有計算機(jī)軟件中占有很大的比例 本章將著重介紹一種有效的Web數(shù)據(jù)庫訪問方案,即利用ASP服務(wù)器端的組件ActiveX Data Objects(ADO)實(shí)現(xiàn)對數(shù)據(jù)庫的操作,5.1 Web數(shù)據(jù)庫訪問技術(shù),5.1.1 概述 Web數(shù)據(jù)庫系統(tǒng)不能僅依賴某個DBMS來實(shí)現(xiàn)整個應(yīng)用系統(tǒng),它是通過其他Web應(yīng)用程序,用標(biāo)準(zhǔn)的HTML

2、語言及其某些特定的擴(kuò)展功能開發(fā)的、以特殊形式訪問數(shù)據(jù)庫的應(yīng)用程序系統(tǒng) Web應(yīng)用系統(tǒng)一般采用Browser/WebServer/ApplicationServer模式實(shí)現(xiàn) Web訪問數(shù)據(jù)庫的關(guān)鍵是與數(shù)據(jù)庫服務(wù)器間的接口,5.1.2 CGI,CGI(Common Gateway Interface,公關(guān)網(wǎng)關(guān)接口)是一種接口標(biāo)準(zhǔn),它使靜態(tài)的Web頁變?yōu)榻换ナ降拿襟w成為可能,圖6-1 通過CGI訪問Web數(shù)據(jù)庫模型,5.1.3 ODBC,ODBC(Open Database Connectivity,開放式數(shù)據(jù)庫連接)是一個數(shù)據(jù)庫編程接口,由微軟公司建議并開發(fā),圖6-2 ODBC應(yīng)用系統(tǒng)模型,5.1

3、.4 JDBC,JDBC是較早的Web開發(fā)平臺,在Web應(yīng)用中,嵌于網(wǎng)頁(HTML文件)中的Java applets利用JDBC來訪問數(shù)據(jù)庫,圖6-3 采用JDBC技術(shù)實(shí)現(xiàn)Web數(shù)據(jù)庫訪問模型,5.1.5 ADO,ADO(ActiveX Data Objects)是微軟公司W(wǎng)eb服務(wù)器端的內(nèi)置組件,ADO允許程序員在編寫程序時,通過一個OLEDB(數(shù)據(jù)庫對象鏈接嵌入技術(shù))提供者,如Microsoft SQL Server,Microsoft Access系統(tǒng)等,訪問并操縱數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù),圖6-4 采用ADO技術(shù)實(shí)現(xiàn)Web數(shù)據(jù)庫訪問模型,5.2 ODBC接口,5.2.1 ODBC接口概述

4、ODBC是微軟公司建議并開發(fā)的數(shù)據(jù)庫API標(biāo)準(zhǔn),ODBC為異種數(shù)據(jù)庫提供了統(tǒng)一的訪問接口,它使應(yīng)用程序能用結(jié)構(gòu)化的查詢語言SQL訪問數(shù)據(jù)庫,從而對操作數(shù)據(jù)庫的應(yīng)用程序屏蔽了不同數(shù)據(jù)庫管理系統(tǒng)的訪問差異,也使數(shù)據(jù)庫系統(tǒng)的開發(fā)不僅僅局限于某個DBMS,ODBC主要定義如下5方面的內(nèi)容: ODBC函數(shù)庫,它為應(yīng)用程序提供連接DBMS、執(zhí)行SQL語句、提取訪問結(jié)果的程序接口 SQL語法,它遵循X/Open and SQL Access Group Call Level Interface Specification標(biāo)準(zhǔn) 錯誤代碼 連接、登錄DBMS 數(shù)據(jù)類型,5.2.2 ODBC的應(yīng)用,一個ODBC應(yīng)

5、用的建立應(yīng)涵蓋以下主要內(nèi)容: 建立需要操作數(shù)據(jù)庫的應(yīng)用程序,該程序通過調(diào)用ODBC函數(shù)提交SQL語句 提供運(yùn)行環(huán)境,該環(huán)境應(yīng)包含數(shù)據(jù)庫驅(qū)動程序,它負(fù)責(zé)處理ODBC函數(shù)調(diào)用,向數(shù)據(jù)源提交SQL請求,向應(yīng)用程序返回結(jié)果,必要時將SQL語法翻譯成符合DBMS語法規(guī)定的格式 具有由用戶數(shù)據(jù)庫、DBMS等構(gòu)成的可供應(yīng)用程序訪問的數(shù)據(jù)源,通過ODBC訪問數(shù)據(jù)庫的基本步驟如下: 創(chuàng)立并配置數(shù)據(jù)源; 建立一個與數(shù)據(jù)源的對話連接; 向數(shù)據(jù)源發(fā)出SQL請求; 定義一個緩沖區(qū)和數(shù)據(jù)格式用于存儲訪問結(jié)果; 提取結(jié)果; 處理各種錯誤; 向用戶報告結(jié)果; 關(guān)閉與數(shù)據(jù)源的連接,5.2.3 創(chuàng)建并配置數(shù)據(jù)源,用戶可通過如下兩

6、種方式創(chuàng)建或配置數(shù)據(jù)源:ODBC數(shù)據(jù)源管理程序或系統(tǒng)函數(shù)調(diào)用 配置一個Access數(shù)據(jù)源的過程如下: 在Windows系統(tǒng)下進(jìn)入控制面板,打開ODBC數(shù)據(jù)源,若是Windows 2000平臺,則打開管理程序下的數(shù)據(jù)源ODBC,屏幕上將出現(xiàn)如圖6-5所示的“ODBC數(shù)據(jù)源管理器”對話框,圖6-5 “ODBC數(shù)據(jù)源管理器”對話框,選擇所使用的數(shù)據(jù)庫驅(qū)動程序,如選擇Microsoft Access Driver (*.mdb),單擊“完成”按鈕,出現(xiàn)如圖6-7所示的對話框,圖6-7 “ODBC Microsoft Access安裝”對話框,選擇“系統(tǒng)DSN”標(biāo)簽,即選擇“系統(tǒng)數(shù)據(jù)源”。要使系統(tǒng)上的所

7、有應(yīng)用程序都可以使用它,必須選用系統(tǒng)DSN,這是建立Web站點(diǎn)的需要。 單擊“添加”按鈕,進(jìn)入“創(chuàng)建新數(shù)據(jù)源”對話框,如圖6-6所示,圖6-6 “創(chuàng)建新數(shù)據(jù)源”對話框,在“數(shù)據(jù)源名”輸入框中鍵入數(shù)據(jù)源名,單擊“選擇”按鈕為該數(shù)據(jù)源指定一個已創(chuàng)建好的Access數(shù)據(jù)庫(*.mdb),該數(shù)據(jù)庫應(yīng)該是在Web應(yīng)用程序中即將訪問的數(shù)據(jù)庫。單擊“確定”按鈕,回到圖6-6“創(chuàng)建新數(shù)據(jù)源”對話框。單擊“確定”按鈕直到關(guān)閉ODBC數(shù)據(jù)管理器,此時完成一個數(shù)據(jù)源的建立過程。若要修改該數(shù)據(jù)源的配置,可在圖6-5“ODBC數(shù)據(jù)源管理器”對話框中選定要更改的數(shù)據(jù)源,再單擊“配置”按鈕,5.3 數(shù)據(jù)庫語言SQL,5.3

8、.1 SQL概述 SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)是一個被廣泛采用、適用于關(guān)系數(shù)據(jù)庫訪問的數(shù)據(jù)庫語言工業(yè)標(biāo)準(zhǔn)。它包括數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢和數(shù)據(jù)控制等語句標(biāo)準(zhǔn)。 SQL具有以下4部分功能: 數(shù)據(jù)定義用于定義數(shù)據(jù)模式。 數(shù)據(jù)查詢用于從數(shù)據(jù)庫中檢索數(shù)據(jù)。 數(shù)據(jù)操縱用于對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增加、刪除、 修改等操作。 數(shù)據(jù)控制用于控制數(shù)據(jù)庫用戶的訪問權(quán)限,5.3.2 主要的SQL語句,查詢語句SELECT SELECT是SQL的核心語句,它功能強(qiáng)大,和各類SQL子句結(jié)合可完成多種復(fù)雜的查詢操作。其語法格式如下: SELECT ALL | DISTINCT

9、fields_list INTO new_tablename FROM table_names WHERE GROUP BY HAVING ORDER BY,插入數(shù)據(jù)語句INSERT INSERT可添加一個或多個記錄到一個表中。INSERT有兩種語法形式: INSERT INTO target IN externaldatabase (fields_list) DEFAULT VALUES|VALUES(DEFAULT|expression_list) INSERT INTO target IN externaldatabase fields_list SELECT|EXECUTE 刪除數(shù)據(jù)語

10、句DELETE DELETE用于從一個或多個表中刪除記錄。其語法格式如下: DELETE FROM table_names WHERE,更新數(shù)據(jù)語句UPDATE UPDATE語句用于更新表中的記錄。其語法格式如下: UPDATE table_name SET Field_1=expression_1,Field_2=expression_2, FROM table1_name|view1_name,table2_name|view2_name, WHERE,5.4 使用ADO訪問數(shù)據(jù)庫,5.4.1 概述 ADO(ActiveX Data Objects,ActiveX數(shù)據(jù)對象)技術(shù)是一種良好的

11、Web數(shù)據(jù)庫訪問解決方案 ADO是一個ASP內(nèi)置的服務(wù)器組件,它是一座連接Web應(yīng)用程序和OLEDB的橋梁 ADO幾乎兼容所有的數(shù)據(jù)庫系統(tǒng) ADO支持多種程序設(shè)計語言,5.4.2 ADO的對象類和對象模型,ADO技術(shù)是通過ADO對象的屬性、方法來完成相應(yīng)的數(shù)據(jù)庫訪問的。ADO共有以下7種獨(dú)立對象類 Connection連接對象,表示與數(shù)據(jù)源的連接關(guān)系 Command命令對象,用于定義一些特定的命令語法,以執(zhí)行相應(yīng)的動作 RecordSet記錄集對象,用于表示來自數(shù)據(jù)庫表或命令執(zhí)行結(jié)果的記錄 Property屬性對象,用于描述對象的屬性,每個ADO對象都有一組惟一的屬性來描述或控制對象的行為,E

12、rror錯誤對象,用于描述Connection對象在連接數(shù)據(jù)庫時發(fā)生的錯誤 Field域(字段)對象,用來表示RecordSet對象的字段,一個記錄行包含一個或多個域(字段) Parameter參數(shù)對象,用來描述Command對象的命令參數(shù),是命令所需要的變量部分,圖6-8 ADO對象模型,5.4.3 ADO樣例,【例】 網(wǎng)絡(luò)導(dǎo)航 Easy 6-1.asp 6-2.asp 6-3.asp 6-4.asp,5.5 ADO Connection對象,1、建立和關(guān)閉connection對象實(shí)例: 2、使用connection對象連接數(shù)據(jù)庫: set db=Server.CreateObject(AD

13、ODB.Connection) db.Open DBQ=“,3、Connection對象的屬性,Commandtimeout:設(shè)置connection對象的execute方法的執(zhí)行時間。默認(rèn)30秒,0值為無限期等待,直到執(zhí)行結(jié)束。 ConnectionString:指定Connection對象的數(shù)據(jù)庫鏈接信息。 打開數(shù)據(jù)庫除了open 方法,可以如下: ,ConnectionTimeout:指定open方法與數(shù)據(jù)庫鏈接的的執(zhí)行截至?xí)r間,默認(rèn)30秒。 DefaultDatabase:在多個數(shù)據(jù)庫中指定默認(rèn)者。 Mode:設(shè)置連接數(shù)據(jù)庫的權(quán)限。 0:為定義 1:只讀 2:只寫 3:可讀可寫,3、C

14、onnection對象的屬性,Version:顯示ADO對象的版本信息 ,3、Connection對象的屬性,4、Connection對象的方法,Open:建立和數(shù)據(jù)庫的連接 Open方法的參數(shù): Dsn:odbc數(shù)據(jù)源名稱 User:數(shù)據(jù)庫登陸賬號 Password:數(shù)據(jù)庫登陸密碼 Driver:數(shù)據(jù)庫類型 Dbq:數(shù)據(jù)庫物理路徑,Close:關(guān)閉Connection對象與數(shù)據(jù)庫的連接 Execute:執(zhí)行數(shù)據(jù)庫查詢、SQL語句(查詢、添加、刪除、更新等) 格式: set Recordset對象=Connection對象.Execute(SQL字符串) 或 Connection對象. Exe

15、cute(SQL字符串),4、Connection對象的方法,BeginTrans :開始事務(wù)的處理 Connection對象.BeginTrans CommitTrans:提交事務(wù)處理結(jié)果 Connection對象.CommitTrans (執(zhí)行該方法后,才真正更新數(shù)據(jù)庫) RollbackTrans:取消事務(wù)處理結(jié)果 Connection對象.RollbackTrans 以上三種方法結(jié)合起來將增加數(shù)據(jù)庫程序的可靠性。,4、Connection對象的方法,5、數(shù)據(jù)庫查詢操作,方法一: set rs=server.createobject(ADODB.Recordset) strquery=s

16、elect * from person rs.open strquery,db 方法二: ,5.6 ADO RecordSet對象,用來操作數(shù)據(jù)庫的記錄集(是表記錄的集合,用來對單個記錄操作) 1、創(chuàng)建Recordset對象(5種方法:RecordSet.asp) 或 先和數(shù)據(jù)庫相連(顯示建立Connection對象),2、存取數(shù)據(jù)庫,讀取數(shù)據(jù)記錄: 利用RecordSet對象讀取記錄既是對字段的訪問。對于一個RecordSet對象,字段名和字段的順序號均可標(biāo)識一個字段。 移動記錄指針的方法: rs.方法 Movefirst Movenext Moveprevious Movelast mov

17、e 添加數(shù)據(jù)記錄:,3、Recordset對象的屬性,返回記錄集,了解當(dāng)前記錄集的特征,得知記錄數(shù),設(shè)置記錄頁的大小,得到或設(shè)置當(dāng)前指針的絕對位置。 對象屬性根據(jù)功能可分為如下幾組: 第一組屬性限定記錄集的內(nèi)容和性質(zhì),在打開記錄前設(shè)置。 Source:設(shè)置數(shù)據(jù)庫查詢信息 Activeconnection:設(shè)置數(shù)據(jù)庫連接信息 cursorType:設(shè)置記錄集指針類型 Locktype: 設(shè)置記錄集的鎖定類型 MaxRecors:控制從服務(wù)器上得到的最大記錄數(shù) cursorLocation:設(shè)置記錄集在客戶端還是在服務(wù)器端處理 Filter:設(shè)置要顯示的內(nèi)容,第二組屬性是關(guān)于記錄的,在打開記錄集后

18、讀取。 Recordcount:返回記錄總數(shù) Var=rescordset.recordcount Bof:判斷當(dāng)前記錄指針是否在記錄的開頭 Eof:判斷當(dāng)前記錄指針是否在記錄的尾部,3、Recordset對象的屬性,第三組屬性完成數(shù)據(jù)分頁顯示的功能,在打開記錄集后再設(shè)。 Pagesize:設(shè)置數(shù)據(jù)分頁顯示時每頁的記錄數(shù)。 Pagecount:設(shè)置數(shù)據(jù)分頁顯示時數(shù)據(jù)頁的總數(shù)。 Absolutepage:設(shè)置當(dāng)前指針位于哪頁。 Absoluteposition:設(shè)置當(dāng)前指針?biāo)诘挠涗浶械慕^對值。,3、Recordset對象的屬性,4、Recordset對象的方法,Open Close Reque

19、ry Movefirst Moveprovious Movenext Movelast Move number,start Addnew和Delete,Update 用法: 或 rs.update fields,values Cancelupdate Getrows(rows,start,fields) Resync:客戶端和服務(wù)器端,舉例:,9-1:數(shù)據(jù)庫基本操作 9-2:利用connection的execute方法維護(hù)數(shù)據(jù)庫 9-7:利用recordset對象查詢記錄 9-8:利用recordset對象分頁顯示記錄 9-9:利用recordset對象更新記錄 9-10:利用recordse

20、t對象更新記錄,5.7 用Command對象執(zhí)行數(shù)據(jù)庫操作,5.7.1 Command對象的常用屬性和方法 執(zhí)行SQL語句可以用打開的Connection對象,也可以用ADO的Command(命令)對象達(dá)到同樣的目的。 Command對象的常用屬性和方法如下: ActiveConnection屬性指定與Command對象關(guān)聯(lián)的已打開 的連接 對象。 Name屬性指定Command對象的名字。 CommandText屬性定義一個可執(zhí)行的命令串。 CommandType屬性指定命令的類型。 Execute方法執(zhí)行命令,5.7.2 用Command對象執(zhí)行SQL語句,【例】 用Command對象的E

21、xecute方法從sales表中檢索出所有記錄。源程序如下: ,5.7.3 用Command對象調(diào)用存儲過程,在Web數(shù)據(jù)庫程序設(shè)計中使用SQL存儲過程有下列好處: 執(zhí)行SQL存儲過程比執(zhí)行SQL命令快得多。當(dāng)一個SQL語句包含在存儲過程中時,服務(wù)器不必每次執(zhí)行它時都要分析和編譯它。 在多個網(wǎng)頁中可以調(diào)用同一個存儲過程,使站點(diǎn)易于維護(hù)。 一個存儲過程可以包含多個SQL語句,這意味著可用存儲過程建立復(fù)雜的查詢。 存儲過程可以接收和返回參數(shù),這是實(shí)現(xiàn)復(fù)雜數(shù)據(jù)庫訪問功能的必要基礎(chǔ)。,存儲過程的調(diào)用形式 存儲過程的調(diào)用也是一個Command對象的執(zhí)行過程 【例】 實(shí)現(xiàn)對存儲過程HitCount的調(diào)用。源程序如下: ,用Parameter對象實(shí)現(xiàn)存儲過程的參數(shù)傳遞 Parameter對象代表基于參數(shù)化查詢或與存儲過程的Command對象相關(guān)聯(lián)的輸入、輸出參數(shù)及存儲過程的返回值。用C

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論