版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第6章 Web數(shù)據(jù)庫程序設計,1 Web數(shù)據(jù)庫訪問技術2 ODBC接口3 數(shù)據(jù)庫語言SQL4 使用ADO訪問數(shù)據(jù)庫 5 用Connection對象連接數(shù)據(jù)庫6 用Command對象執(zhí)行數(shù)據(jù)庫操作7 用RecordSet對象控制數(shù)據(jù)8 程序設計舉例——網(wǎng)站會員登錄與數(shù)據(jù)修改本 章 小 結,數(shù)據(jù)庫應用系統(tǒng)在現(xiàn)有計算機軟件中占有很大的比例 本章將著重介紹一種有效的Web數(shù)據(jù)庫訪問方案,即利用ASP服務器端的
2、組件ActiveX Data Objects(ADO)實現(xiàn)對數(shù)據(jù)庫的操作,6.1 Web數(shù)據(jù)庫訪問技術,6.1.1 概述Web數(shù)據(jù)庫系統(tǒng)不能僅依賴某個DBMS來實現(xiàn)整個應用系統(tǒng),它是通過其他Web應用程序,用標準的HTML語言及其某些特定的擴展功能開發(fā)的、以特殊形式訪問數(shù)據(jù)庫的應用程序系統(tǒng)Web應用系統(tǒng)一般采用Browser/WebServer/ApplicationServer模式實現(xiàn)Web訪問數(shù)據(jù)庫的關鍵是與數(shù)據(jù)庫服務器間
3、的接口,6.1.2 CGI,CGI(Common Gateway Interface,公關網(wǎng)關接口)是一種接口標準,它使靜態(tài)的Web頁變?yōu)榻换ナ降拿襟w成為可能,圖6-1 通過CGI訪問Web數(shù)據(jù)庫模型,6.1.3 ODBC,ODBC(Open Database Connectivity,開放式數(shù)據(jù)庫連接)是一個數(shù)據(jù)庫編程接口,由微軟公司建議并開發(fā),圖6-2 ODBC應用系統(tǒng)模型,6.1.4 JDBC,JDBC是較早的Web開發(fā)
4、平臺,在Web應用中,嵌于網(wǎng)頁(HTML文件)中的Java applets利用JDBC來訪問數(shù)據(jù)庫,圖6-3 采用JDBC技術實現(xiàn)Web數(shù)據(jù)庫訪問模型,6.1.5 ADO,ADO(ActiveX Data Objects)是微軟公司W(wǎng)eb服務器端的內置組件,ADO允許程序員在編寫程序時,通過一個OLEDB(數(shù)據(jù)庫對象鏈接嵌入技術)提供者,如Microsoft SQL Server,Microsoft Access系統(tǒng)等,訪問并操縱數(shù)
5、據(jù)庫服務器中的數(shù)據(jù),圖6-4 采用ADO技術實現(xiàn)Web數(shù)據(jù)庫訪問模型,6.2 ODBC接口,6.2.1 ODBC接口概述ODBC是微軟公司建議并開發(fā)的數(shù)據(jù)庫API標準,ODBC為異種數(shù)據(jù)庫提供了統(tǒng)一的訪問接口,它使應用程序能用結構化的查詢語言SQL訪問數(shù)據(jù)庫,從而對操作數(shù)據(jù)庫的應用程序屏蔽了不同數(shù)據(jù)庫管理系統(tǒng)的訪問差異,也使數(shù)據(jù)庫系統(tǒng)的開發(fā)不僅僅局限于某個DBMS,,ODBC主要定義如下5方面的內容:ODBC函數(shù)庫,它為應用程
6、序提供連接DBMS、執(zhí)行SQL語句、提取訪問結果的程序接口SQL語法,它遵循X/Open and SQL Access Group Call Level Interface Specification標準錯誤代碼連接、登錄DBMS數(shù)據(jù)類型,6.2.2 ODBC的應用,一個ODBC應用的建立應涵蓋以下主要內容:建立需要操作數(shù)據(jù)庫的應用程序,該程序通過調用ODBC函數(shù)提交SQL語句提供運行環(huán)境,該環(huán)境應包含數(shù)據(jù)庫驅動程序,它負
7、責處理ODBC函數(shù)調用,向數(shù)據(jù)源提交SQL請求,向應用程序返回結果,必要時將SQL語法翻譯成符合DBMS語法規(guī)定的格式具有由用戶數(shù)據(jù)庫、DBMS等構成的可供應用程序訪問的數(shù)據(jù)源,,通過ODBC訪問數(shù)據(jù)庫的基本步驟如下:創(chuàng)立并配置數(shù)據(jù)源;建立一個與數(shù)據(jù)源的對話連接;向數(shù)據(jù)源發(fā)出SQL請求;定義一個緩沖區(qū)和數(shù)據(jù)格式用于存儲訪問結果;提取結果;處理各種錯誤;向用戶報告結果;關閉與數(shù)據(jù)源的連接,6.2.3 創(chuàng)建并配置數(shù)據(jù)源,
8、用戶可通過如下兩種方式創(chuàng)建或配置數(shù)據(jù)源:ODBC數(shù)據(jù)源管理程序或系統(tǒng)函數(shù)調用配置一個Access數(shù)據(jù)源的過程如下:在Windows系統(tǒng)下進入控制面板,打開ODBC數(shù)據(jù)源,若是Windows 2000平臺,則打開管理程序下的數(shù)據(jù)源ODBC,屏幕上將出現(xiàn)如圖6-5所示的“ODBC數(shù)據(jù)源管理器”對話框,圖6-5 “ODBC數(shù)據(jù)源管理器”對話框,,選擇所使用的數(shù)據(jù)庫驅動程序,如選擇Microsoft Access Driver (*.md
9、b),單擊“完成”按鈕,出現(xiàn)如圖6-7所示的對話框,圖6-7 “ODBC Microsoft Access安裝”對話框,,選擇“系統(tǒng)DSN”標簽,即選擇“系統(tǒng)數(shù)據(jù)源”。要使系統(tǒng)上的所有應用程序都可以使用它,必須選用系統(tǒng)DSN,這是建立Web站點的需要。單擊“添加”按鈕,進入“創(chuàng)建新數(shù)據(jù)源”對話框,如圖6-6所示,圖6-6 “創(chuàng)建新數(shù)據(jù)源”對話框,,在“數(shù)據(jù)源名”輸入框中鍵入數(shù)據(jù)源名,單擊“選擇”按鈕為該數(shù)據(jù)源指定一個已創(chuàng)建好的Ac
10、cess數(shù)據(jù)庫(*.mdb),該數(shù)據(jù)庫應該是在Web應用程序中即將訪問的數(shù)據(jù)庫。單擊“確定”按鈕,回到圖6-6“創(chuàng)建新數(shù)據(jù)源”對話框。單擊“確定”按鈕直到關閉ODBC數(shù)據(jù)管理器,此時完成一個數(shù)據(jù)源的建立過程。若要修改該數(shù)據(jù)源的配置,可在圖6-5“ODBC數(shù)據(jù)源管理器”對話框中選定要更改的數(shù)據(jù)源,再單擊“配置”按鈕,6.3 數(shù)據(jù)庫語言SQL,6.3.1 SQL概述SQL(Structured Query Language,結構化查詢
11、語言)是一個被廣泛采用、適用于關系數(shù)據(jù)庫訪問的數(shù)據(jù)庫語言工業(yè)標準。它包括數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢和數(shù)據(jù)控制等語句標準。SQL具有以下4部分功能:數(shù)據(jù)定義用于定義數(shù)據(jù)模式。數(shù)據(jù)查詢用于從數(shù)據(jù)庫中檢索數(shù)據(jù)。數(shù)據(jù)操縱用于對數(shù)據(jù)庫數(shù)據(jù)進行增加、刪除、 修改等操作。數(shù)據(jù)控制用于控制數(shù)據(jù)庫用戶的訪問權限,6.3.2 主要的SQL語句,查詢語句SELEC
12、TSELECT是SQL的核心語句,它功能強大,和各類SQL子句結合可完成多種復雜的查詢操作。其語法格式如下: SELECT [ALL | DISTINCT] fields_list [INTO] new_tablename FROM table_names [WHERE…]
13、[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
14、[IN externaldatabase] fields_list{SELECT…|EXECUTE…}刪除數(shù)據(jù)語句DELETEDELETE用于從一個或多個表中刪除記錄。其語法格式如下:DELETE FROM table_names[WHERE…],,更新數(shù)據(jù)語句UPDATE UPDATE語句用于更新表中的記錄。其語法格式如下:UPDATE table_nameSET Field_1=exp
15、ression_1[,Field_2=expression_2,…][FROM table1_name|view1_name[,table2_name|view2_name,…]][WHERE…],6.4 使用ADO訪問數(shù)據(jù)庫,6.4.1 概述ADO(ActiveX Data Objects,ActiveX數(shù)據(jù)對象)技術是一種良好的Web數(shù)據(jù)庫訪問解決方案ADO是一個ASP內置的服務器組件,它是一座連接Web應用程
16、序和OLEDB的橋梁ADO幾乎兼容所有的數(shù)據(jù)庫系統(tǒng)ADO支持多種程序設計語言,6.4.2 ADO的對象類和對象模型,ADO技術是通過ADO對象的屬性、方法來完成相應的數(shù)據(jù)庫訪問的。ADO共有以下7種獨立對象類Connection——連接對象,表示與數(shù)據(jù)源的連接關系Command——命令對象,用于定義一些特定的命令語法,以執(zhí)行相應的動作RecordSet——記錄集對象,用于表示來自數(shù)據(jù)庫表或命令執(zhí)行結果的記錄Property
17、——屬性對象,用于描述對象的屬性,每個ADO對象都有一組惟一的屬性來描述或控制對象的行為,,Error——錯誤對象,用于描述Connection對象在連接數(shù)據(jù)庫時發(fā)生的錯誤Field——域(字段)對象,用來表示RecordSet對象的字段,一個記錄行包含一個或多個域(字段)Parameter——參數(shù)對象,用來描述Command對象的命令參數(shù),是命令所需要的變量部分,圖6-8 ADO對象模型,6.4.3 ADO樣例,【例6-10】
18、 以下是一個視頻網(wǎng)站中某個頁面的源代碼(ch6-10.asp),它完成在頁面上列出數(shù)據(jù)庫表中所有電影的名稱、影片級別及主要演員的功能。存放這些電影信息的數(shù)據(jù)庫表名為films,點擊查看程序,6.5 用Connection對象連接數(shù)據(jù)庫,6.5.1 Connection對象的常用屬性和方法Connection對象的常用屬性:Mode用于設置數(shù)據(jù)的可用權限,其屬性
19、 值是系統(tǒng)定義的一些常量,只能在關閉Connection對象時設置。State指明Connection對象的當前狀態(tài), 包括關閉、打開、正在連接、正在執(zhí) 行命令
20、等。ConnectionTimeout設置對象建立連接操作失敗時的等 待時間。DefaultDatabase設置連接數(shù)據(jù)源的默認數(shù)據(jù)庫。ConnectionString設置連接數(shù)據(jù)源的一些信息,,Connection對象的常用方法:Open 用于建立到數(shù)據(jù)源的物理連接。Execute 用于執(zhí)行指定的查詢
21、、SQL語句、存儲過程 或特定的文本。Cancel 用于取消用異步方式執(zhí)行的Execute或 Open方法的調用。Close用于關閉一個連接。在對Connection對象 操作結束時,使用Close方法釋放所有與之關
22、 聯(lián)的系統(tǒng)資源,6.5.2 打開和關閉數(shù)據(jù)庫連接,打開Connection對象打開Connection對象的Open方法的語法格式如下: Open (ConnectionString, [UserID, ]Password [, Options] )關閉Connection對象關閉Connection對象的Close方法的語法格式如下:對象實例名.Close【例6-11】 以下是一段使用
23、連接對象的代碼,可以反映連接對象應用的基本步驟,查看程序,6.5.3 通過Connection對象執(zhí)行SQL語句,打開Connection對象后,可以通過對象的Execute方法實現(xiàn)SQL語句的執(zhí)行過程。Execute方法的語法格式如下:Execute (CommandText , RecordsAffected , Option)【例6-12】 下列代碼從數(shù)據(jù)庫表sales中檢索出所有記錄并返回記錄數(shù)。,點擊查看程序,6.5
24、.4 Connection對象的事務處理,【例6-14】 本例是進行事務處理的一段代碼 ,6.6 用Command對象執(zhí)行數(shù)據(jù)庫操作,6.6.1 Command對象的常用屬性和方法執(zhí)行SQL語句可以用打開的Connection對象,也可以用ADO的Command(命令)對象達到同樣的目的。Command對象的常用屬性和方法如下:ActiveConnection屬性指定與Command對象關聯(lián)的已打開 的連接
25、 對象。Name屬性指定Command對象的名字。CommandText屬性定義一個可執(zhí)行的命令串。CommandType屬性指定命令的類型。Execute方法執(zhí)行命令,6.6.2 用Command對象執(zhí)行SQL語句,【例6-16】 用Command對象的Execute方法從sales表中檢索出所有記錄。源程序如下:,6.6.3 用Comman
26、d對象調用存儲過程,在Web數(shù)據(jù)庫程序設計中使用SQL存儲過程有下列好處:執(zhí)行SQL存儲過程比執(zhí)行SQL命令快得多。當一個SQL語句包含在存儲過程中時,服務器不必每次執(zhí)行它時都要分析和編譯它。在多個網(wǎng)頁中可以調用同一個存儲過程,使站點易于維護。一個存儲過程可以包含多個SQL語句,這意味著可用存儲過程建立復雜的查詢。存儲過程可以接收和返回參數(shù),這是實現(xiàn)復雜數(shù)據(jù)庫訪問功能的必要基礎。,,存儲過程的調用形式 存儲過程的調用也是一個C
27、ommand對象的執(zhí)行過程【例6-17】 實現(xiàn)對存儲過程HitCount的調用。源程序如下: ,,用Parameter對象實現(xiàn)存儲過程的參數(shù)傳遞Parameter對象代表基于參數(shù)化查詢或與存儲過程的Command對象相關聯(lián)的輸入、輸出參數(shù)及存儲過程的返回值。用Command對象的CreateParameter方法可以建立一個參數(shù)對象,其語法格式如下:CreateParameter( Name,Type,Direction,
28、Size,Value)【例6-18】 利用對一個存儲過程LoginCheck的調用,驗證登錄用戶的合法性,點擊查看源程序,6.7 用RecordSet對象控制數(shù)據(jù),6.7.1 RecordSet對象簡介RecordSet對象可以實現(xiàn)以下功能:指定可以檢查的記錄。移動記錄。添加、更改和刪除記錄。通過更改記錄更新數(shù)據(jù)源。管理RecordSet的總體狀態(tài),6.7.2 RecordSet對象的創(chuàng)建和數(shù)據(jù)讀取,RecordS
29、et對象的創(chuàng)建使用Server.CreateObject(“ADODB. RecordSet”)創(chuàng)建RecordSet對象,然后通過打開RecordSet對象創(chuàng)建一個與某個數(shù)據(jù)庫表相關聯(lián)的RecordSet對象實例可以采用Connection和Command對象的Execute方法,當用Execute方法從一個數(shù)據(jù)庫返回查詢結果時,將自動創(chuàng)建一個RecordSet對象,,RecordSet對象數(shù)據(jù)的讀取【例6-19】 在Web頁
30、面上顯示表sales的所有記錄數(shù)據(jù),讀取字段值時利用字段順序號。源程序如下 Show Table sales …………(點擊看全部),6.7.3 記錄集記錄間的移動方法和記錄集游標,移動方法包括:MoveNumRecords在記錄集中向前或向后移動指 定條記錄MoveFirst
31、移動至記錄集中的第一條記錄MoveLast移動至記錄集中的最后一條記 錄MovePrevious移動至當前記錄的上一條記錄MoveNext移動至當前記錄的下一條記錄,,游標的類型有以下4種 :adOpenFowardOnly 前向游標,只能在記錄集中向前移 動。
32、adOpenKeyset可在記錄集中向前或向后移動。 若 另一用戶刪除或改變一條記錄,記錄 集將反映這種變化,但若增加一條新
33、 記錄,新記錄不會出現(xiàn)在記錄集中。adOpenDynamic可在記錄集中向前或向后移動。 其 他用戶造成的任何改變都會動態(tài)反映 在記錄集中。adOpenStatic可在記錄集中
34、向前或向后移動。不 在記錄集中反映其他用戶對記錄集造 成的任何改變,,【例6-20】 在Web頁中列出數(shù)據(jù)庫表sales的GoodsName域,要求顯示順序從最后一條記錄開始直至第一條記錄為止 BackWard <%Set Conn=Server.Creat
35、eObject ("ADODB.Connection")Set RS=Server.CreateObject ("ADODB.RecordSet")Conn.Open "MyData"‘打開記錄集時,將指定游標的類型為adOpenStatic,可在記錄集中前向或后向移動RS.Open "SELECT * FROM sales",Co
36、nn,adOpenstatic…………….(點擊查看全部),6.7.4 記錄集記錄的修改和記錄鎖定,使用RecordSet對象的一組方法對記錄集中的記錄進行增、刪、改操作 AddNew [Fields,Values]方法 Delete [AffectRecords]方法 Update [Fields,Values]方法 CancelUpdate方法 UpdateBatch方法 CancelBatch方法,,【例6-2
37、1】 在數(shù)據(jù)庫表sales中插入一條新記錄 Insert a Record <%Set Conn=Server.CreateObject (" ADODB.Connection")Set RS=Server.CreateObject (" ADODB.RecordSet")Conn.Open " MyData"
38、'記錄集打開時,將指定鎖定方式為adLockPessimisticRS.Open " SELECT * FROM sales",Conn,adOpenDynamic,adLockPessimistic……(點擊查看全部),6.7.5 RecordSet對象的其他重要操作,指定記錄集的最大容量 記錄集對象的MaxRecords屬性可以限制記錄集中存放的記錄數(shù)記錄集中記錄的分頁處理與分頁
39、相關的屬性包括:PageSize指定一頁的記錄數(shù),它是分頁的關鍵。AbsolutePage表示當前記錄所在頁的頁號。AbsolutePosition表示當前記錄相對于第一條記錄的位置,當前記錄是第一條記錄時,其值為1PageCountRecordSet對象總的頁數(shù)。RecordCountRecordSet對象總的記錄數(shù),,用數(shù)組處理記錄集數(shù)據(jù) 【例6-23】 將從
40、表sales中取出的記錄放入一個數(shù)組中" & SalesArray(0,i)) Reponse.Write (" " & SalesArray(1,i))nextRS.CloseConn.Close%>,本 章 小 結,本章著重介紹了一種有效的Web數(shù)據(jù)庫解決方案,即利用ASP服務器端的組件ActiveX Data Objects(ADO)訪問數(shù)據(jù)庫ADO共有7個對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- web_《web高級程序設計教程》第2章__web程序設計的基礎
- web程序設計題庫
- 基于web的程序設計
- web數(shù)據(jù)庫程序設計語言課程設計--人事信息管理系統(tǒng)
- 《數(shù)據(jù)庫程序設計》在線測試匯總
- web應用程序設計(aspnet)
- web應用程序設計專業(yè)
- web程序設計指導書
- web程序設計復習資料
- web程序設計指導書
- web程序設計課程設計報告
- 第6章javabean組件程序設計
- web程序設計課程設計--簡易論壇程序開發(fā)
- c#編寫web程序設計報告
- c語言程序設計第6章課件-
- web程序設計實驗指導書
- 基于web服務應用程序設計
- 基于web程序設計練習題
- web程序設計試題庫匯總
- web程序設計期末試題及答案
評論
0/150
提交評論