ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用_第1頁(yè)
ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用_第2頁(yè)
ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用_第3頁(yè)
ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用_第4頁(yè)
ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、11.1 課前導(dǎo)讀11.2 課堂教學(xué)11.3 11.4 課后作業(yè)ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用11.1 課前導(dǎo)讀 1. 網(wǎng)站數(shù)據(jù)庫(kù)化 2. 使用ADO訪問數(shù)據(jù)庫(kù) 3. ADO的特點(diǎn) 4. 示例數(shù)據(jù)庫(kù) ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用11.1 課前導(dǎo)讀 作為一種既易于使用又可擴(kuò)展的技術(shù),ADO可以用于向網(wǎng)頁(yè)添加數(shù)據(jù)庫(kù)訪問。使用ADO編寫的應(yīng)用程序可以存取在Internet上任何地方的資源,例如,你可以在家里通過瀏覽器填寫購(gòu)物單,去購(gòu)買遠(yuǎn)在千里之外的物品。1. 網(wǎng)站數(shù)據(jù)庫(kù)化 將網(wǎng)站數(shù)據(jù)庫(kù)化,就是使用數(shù)據(jù)庫(kù)來管理整個(gè)網(wǎng)站。只要更新數(shù)據(jù)庫(kù)的內(nèi)容,網(wǎng)站的內(nèi)容就會(huì)被自動(dòng)更新。將網(wǎng)站數(shù)據(jù)庫(kù)化的好處如下:ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介

2、和應(yīng)用 可以自動(dòng)更新網(wǎng)頁(yè)。采用數(shù)據(jù)庫(kù)管理,只要更新數(shù)據(jù)庫(kù)的數(shù)據(jù),網(wǎng)頁(yè)內(nèi)容就會(huì)自動(dòng)得到更新,過期的網(wǎng)頁(yè)也可以被自動(dòng)拿掉。 加強(qiáng)搜尋功能。將網(wǎng)站的內(nèi)容儲(chǔ)存在數(shù)據(jù)庫(kù)中,可以利用數(shù)據(jù)庫(kù)提供的強(qiáng)大搜尋功能,從多個(gè)方面搜尋網(wǎng)站的數(shù)據(jù)。 可以實(shí)現(xiàn)各種基于Web數(shù)據(jù)庫(kù)的應(yīng)用。使用者只要使用瀏覽器,就可以通過Internet或Intranet內(nèi)部網(wǎng)絡(luò),存取Web數(shù)據(jù)庫(kù)的數(shù)據(jù)??梢允褂迷趯W(xué)校教學(xué)、醫(yī)院、商業(yè)、銀行、股市、運(yùn)輸旅游等各種應(yīng)用上。例如銀行余額查詢、在線購(gòu)書、在線查詢、在線預(yù)定機(jī)票、在線醫(yī)院預(yù)約掛號(hào)、在線 費(fèi)查詢、在線股市買賣交易、在線學(xué)校注冊(cè)選課,以及在線擇友等。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用2. 使用AD

3、O訪問數(shù)據(jù)庫(kù) 目前,Microsoft對(duì)應(yīng)用程序訪問各種各樣的數(shù)據(jù)源所使用的方法是OLE DB,OLE DB是一套組件對(duì)象模型(COM)接口,但它是相當(dāng)復(fù)雜的。連接應(yīng)用程序與OLE DB的橋梁就是ADO。 可以使用ADO編寫簡(jiǎn)潔和可擴(kuò)展的腳本,連接到與OLE DB兼容的數(shù)據(jù)源,如數(shù)據(jù)庫(kù)、電子表格、順序數(shù)據(jù)文件或電子郵件目錄。使用ADO的對(duì)象模型,可以輕松地(使用VBScript或JScript等腳本語(yǔ)言)訪問這些接口,并將數(shù)據(jù)庫(kù)功能添加到您的Web應(yīng)用程序中。另外,還可以使用ADO訪問與開放式數(shù)據(jù)庫(kù)互連(ODBC)兼容的數(shù)據(jù)庫(kù)。 ADO可以使用VBScript、JavaScript腳本語(yǔ)言來控

4、制數(shù)據(jù)庫(kù)的存取以及輸出查詢結(jié)果。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用3. ADO的特點(diǎn) ADO可以用來建造客戶/服務(wù)器結(jié)構(gòu)及Web的應(yīng)用,它具有以下的特點(diǎn): 支持批處理(Batch Updating),可以分批處理客戶端提出的請(qǐng)求。 支持存儲(chǔ)過程(Stored Procedures),可使用in/out參數(shù)給存儲(chǔ)過程輸入及輸出值,并可以取得存儲(chǔ)過程的返回值。 可以使用存儲(chǔ)過程或批處理SQL指令,傳回多組記錄集的功能。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用4. 示例數(shù)據(jù)庫(kù) 雖然可以使用多種數(shù)據(jù)庫(kù)系統(tǒng)來從事ASP網(wǎng)頁(yè)數(shù)據(jù)庫(kù)的設(shè)計(jì),但是由于Microsoft Access屬于Microsoft Office家族,取得較為容易

5、,且界面與Office家族一致,使用容易,因此本教程采用Microsoft Access進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)庫(kù)的設(shè)計(jì)。 本課的示例數(shù)據(jù)庫(kù)文件中包含的“職工工資”表的結(jié)構(gòu)見表11-1。 ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用表11-1 “職工工資”表的結(jié)構(gòu)字段名稱類型必填字段長(zhǎng)度索引部門文本(Text)是6編號(hào)文本(Text)是6主索引姓名文本(Text)是8基本工資貨幣(Currency)否崗位津貼貨幣(Currency)否職務(wù)補(bǔ)貼貨幣(Currency)否獎(jiǎng)金貨幣(Currency)否房租貨幣(Currency)否水電貨幣(Currency)否實(shí)發(fā)工資貨幣(Currency)否ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用11.2 課

6、堂教學(xué) 11.2.1 ADO的概念 11.2.2 訪問數(shù)據(jù)庫(kù)ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用11.2.1 ADO的概念 1. ADO對(duì)象模型 2. Connection對(duì)象 3. Command對(duì)象 4. Recordset對(duì)象ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用1. ADO對(duì)象模型 ADO對(duì)象模型包括7個(gè)對(duì)象和3個(gè)集合,如圖11-1所示。其中對(duì)象及集合的說明見表11-1。表11-1 ADO對(duì)象描述對(duì)象描述Connection(連接對(duì)象)用來建立數(shù)據(jù)源和ADO程序之間的連接Command(命令對(duì)象)用來嵌入SQL查詢,包括對(duì)存儲(chǔ)過程的調(diào)用Parameter(參數(shù)對(duì)象)用來傳遞參數(shù)給SQL查詢,在使用存儲(chǔ)過程時(shí)用到

7、Recordset(記錄集對(duì)象)用來瀏覽及操作實(shí)際數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù),這是非常重要的一個(gè)對(duì)象Field(字段對(duì)象)用來取得一個(gè)記錄集(Recordset)內(nèi)不同字段的值Error(錯(cuò)誤對(duì)象)用來返回一個(gè)數(shù)據(jù)庫(kù)連接(Connection)上的錯(cuò)誤Property(屬性對(duì)象)指明一個(gè)ADO對(duì)象的屬性ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用表11-2 ADO集合描述集合描述Errors所有的Error對(duì)象集合。這個(gè)集合用來響應(yīng)一個(gè)連接(Connection) 上的單一錯(cuò)誤Parameters所有的Parameter對(duì)象集合。這個(gè)集合關(guān)聯(lián)著一個(gè)Command對(duì)象Fields所有的字段對(duì)象集合。這個(gè)集合關(guān)聯(lián)著一個(gè)Recor

8、dset對(duì)象的所有字段Properties所有的Property對(duì)象集合。這個(gè)集合關(guān)聯(lián)著Connection、Command、Recordset或者Field對(duì)象 說明:在ADO對(duì)象模型中最為重要的對(duì)象是三個(gè)一般對(duì)象:Connection對(duì)象、Command對(duì)象和Recordset對(duì)象,通過這三個(gè)對(duì)象,可以方便地建立數(shù)據(jù)庫(kù)連接,執(zhí)行SQL查詢及存取查詢的的結(jié)果。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用ConnectionRecordsetCommandErrorsFieldsFieldPrametersPrametersError圖11-1 ADO對(duì)象模型ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用2. Connection對(duì)象

9、 ASP使用ADO對(duì)各種數(shù)據(jù)源進(jìn)行各種操作,其中,Connection對(duì)象是必不可少的,Connection對(duì)象可以用來在應(yīng)用程序和數(shù)據(jù)庫(kù)中建立一條數(shù)據(jù)傳輸連線,在這個(gè)基礎(chǔ)之上可以使用Command對(duì)象及Recordse對(duì)象來對(duì)Connection對(duì)象所連接的數(shù)據(jù)庫(kù)進(jìn)行插入刪除、更新和查詢等操作。同撥打 一樣,建立一個(gè)Connection對(duì)象就像是拿起話筒,打開一個(gè)Connection對(duì)象類似于撥號(hào),而使用Command對(duì)象及Recordse對(duì)象已經(jīng)是在用這條線路通話了。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Connection對(duì)象的常用屬性見表11-3。表11-3 Connection對(duì)象的常用屬性屬性

10、意義描述CommandTimeout定義了使用Execute方法運(yùn)行一條SQL命令的最長(zhǎng)時(shí)限,才能夠中斷并產(chǎn)生錯(cuò)誤。默認(rèn)值為30秒(設(shè)定為0表示沒有限制)ConnectionString設(shè)定連接數(shù)據(jù)源的信息,包括、Password、Userld、DataSource、Provider等參數(shù)ConnectionTimeout定義了使用open方法連接數(shù)據(jù)源的最長(zhǎng)等待時(shí)間,默認(rèn)值為15秒(設(shè)定為0時(shí)表示沒有限制)DefaultDatabase定義連接的默認(rèn)數(shù)據(jù)庫(kù)Mode建立連接之前,設(shè)定連接的讀寫方式,決定是否可更改目前數(shù)據(jù)。0-不設(shè)定(默認(rèn))、1-只讀、2-只寫、3-讀寫Provider設(shè)置連接

11、的數(shù)據(jù)提供者(數(shù)據(jù)庫(kù)管理程序),默認(rèn)值是MSDASQL(MicrosotODBC For OLEDB)State讀取當(dāng)前鏈接對(duì)象的狀態(tài),取0表示關(guān)閉,1表示打開ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Connection對(duì)象的常用方法見表11-4。表11-4 Connection對(duì)象的方法及描述方法意義描述Open建立一個(gè)與數(shù)據(jù)源的連接對(duì)象Close關(guān)閉與數(shù)據(jù)源的連接,并且釋放與連接有關(guān)的系統(tǒng)資源Execute執(zhí)行SQL命令或存儲(chǔ)過程,以實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的通訊BeginTrans開始一個(gè)新的事務(wù),即在內(nèi)存中為事務(wù)開辟一片內(nèi)存緩沖區(qū)CommitTrans提交事務(wù),即把一次事務(wù)中所有變動(dòng)的數(shù)據(jù)從內(nèi)存緩沖區(qū)一次性地寫

12、入硬盤,結(jié)束當(dāng)前事務(wù)并可能開始一個(gè)新的事務(wù)RollbackTrans回滾事務(wù),即取消開始此次事務(wù)以來對(duì)數(shù)據(jù)源的所有操作,并結(jié)束本次事務(wù)操作 下面對(duì)部分方法進(jìn)行詳細(xì)說明。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Open方法:建立一個(gè)與數(shù)據(jù)源的連接對(duì)象,打開與數(shù)據(jù)源的連接。其語(yǔ)法格式為:Connobject.Open connectionstring, UserId, Password 其中:Connectstring為可選參數(shù),它是一個(gè)字符串變量,包含鏈接的信息。用法參見Conectionstring屬性。 UserId為可選參數(shù),它是一個(gè)字符串變量,包含建立連接時(shí)訪問數(shù)據(jù)庫(kù)使用的用戶名稱。 Password

13、為可選參數(shù),它是一個(gè)字符串變量,包含建立連接時(shí)訪問數(shù)據(jù)庫(kù)使用的密碼。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Close方法:關(guān)閉與數(shù)據(jù)源的連接,并且釋放與連接有關(guān)的系統(tǒng)資源。其語(yǔ)法格式為: 其中:Connobject為已經(jīng)創(chuàng)建的Connection對(duì)象。 使用Close方法關(guān)閉Connection對(duì)象,但沒有從內(nèi)存中刪除該對(duì)象。因此一個(gè)關(guān)閉的connection對(duì)象還可以用open方法打開而不必再次創(chuàng)建一個(gè)connection對(duì)象。此外,在使用close方法關(guān)閉連接時(shí),也將關(guān)閉以此連接相關(guān)的所有活動(dòng)的recoordset對(duì)象。但是,與此連接相關(guān)的command對(duì)象將不受影響,只不過command對(duì)象不再參與

14、這個(gè)連接。 為了釋放connection對(duì)象所占用的所有資源,可以用下面的方法:Set Connobject = nothingASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Execute方法:執(zhí)行SQL命令或存儲(chǔ)過程,以實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的通訊。其語(yǔ)法為: 有返回記錄的格式:Set Rs = Connobject.Execute(CommandText, ReccordAffected, Options) 無返回記錄的格式:Connobject.Execute CommandText, ReccordAffected, Options 其中:Rs為創(chuàng)建的Recordsed對(duì)象;Connobject為已經(jīng)創(chuàng)建的Conn

15、ection對(duì)象。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 CommandType是一個(gè)字符串,它包含一個(gè)表名,或某個(gè)將被執(zhí)行的SQL語(yǔ)句;ReccordAffected為可選參數(shù),返回此次操作所影響的記錄數(shù)。Options為可選參數(shù),用來指定參數(shù)的CommandText參數(shù)的性質(zhì),即用來指定ADO如何解釋CommandText參數(shù)的參數(shù)值,其取值與意義見表11-5。表11-5 Options參數(shù)的取值及意義值意義描述1表示被執(zhí)行的字符串包含一個(gè)命令文本2表示被執(zhí)行的字符串包含一個(gè)表名4表示被執(zhí)行的字符串包含一個(gè)存儲(chǔ)過程名8沒有指定字符串的內(nèi)容(這是默認(rèn)值)ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用3. Command對(duì)象 C

16、ommand對(duì)象用來定義數(shù)據(jù)庫(kù)的查詢動(dòng)作,這個(gè)查詢一般采用SQL語(yǔ)句,大部分?jǐn)?shù)據(jù)庫(kù)都會(huì)支持SQL語(yǔ)言解釋。通過和SQL Server的查詢及存儲(chǔ)過程的良好結(jié)合,Command對(duì)象有更強(qiáng)大的數(shù)據(jù)庫(kù)訪問能力,無論是對(duì)數(shù)據(jù)庫(kù)的插入、更新和刪除這類無需返回結(jié)果集的操作,還是對(duì)Select查詢這樣需返回結(jié)果集的操作都一樣簡(jiǎn)單。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Command對(duì)象的常用屬性見表11-6。表11-6 Command對(duì)象的屬性屬性意義描述ActiveConnection定義了Command對(duì)象的連接信息,用來指定當(dāng)前的Command對(duì)象的操作對(duì)象是哪個(gè)Connection對(duì)象CommandText定義

17、傳送給數(shù)據(jù)提供者的命令文本。它被用來設(shè)定或返回一個(gè)字符串,該字符串包含一個(gè)SQL命令、一個(gè)表名或一個(gè)存儲(chǔ)過程名。默認(rèn)值為空字符串CommandType指示CommandTem屬性中設(shè)定的“命令字符串”的類型CommandTimeout用來設(shè)定等候運(yùn)行一條命令的最長(zhǎng)等待時(shí)間,超過該時(shí)間命令對(duì)象中止并產(chǎn)生一個(gè)錯(cuò)誤。設(shè)定為0時(shí)表示無限期等待Name用來設(shè)置和讀取一個(gè)Command對(duì)象的名字Prepared該屬性指示在命令被執(zhí)行前是否要用命令創(chuàng)建一個(gè)預(yù)備語(yǔ)句State用來設(shè)置或讀取當(dāng)前Command對(duì)象的狀態(tài)是打開的或關(guān)閉的ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 說明:CommandType屬性指示CammandT

18、ext屬性中設(shè)定的“命令字符串”的類型,即用來指ADO如何解釋CammandText參數(shù)的參數(shù)值,它的取值與意義與表11-5中Options參數(shù)的取值及意義相同。 Command對(duì)象的常用方法有Execute方法,用來運(yùn)行CommandText屬性所設(shè)定的SQL查詢、SQL說明命令或存儲(chǔ)過程,以實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的通訊。其語(yǔ)法為: 有返回記錄的格式:Set Rs = Comm. Execute(RecordsAffected, Parameters, Options)ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 無返回記錄的格式:Comm.Execute RecordsAfiected. Parameters, Opt

19、ions 其中:Rs為創(chuàng)建的Recordsed對(duì)象;Comm為已經(jīng)創(chuàng)建的Command對(duì)象。 RecordAfiected為可選參數(shù),返回此次操作所影響的記錄數(shù)。Parameters為可選參數(shù),表示一個(gè)SQL語(yǔ)句的參數(shù)集合。Options為可選參數(shù),用來指定ADO如何解釋CommandText參數(shù)的參數(shù)值,它的取值與意義與表11-5中Options參數(shù)的取值及意義相同。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用4. Recordset對(duì)象 Recordset對(duì)象對(duì)應(yīng)著Command對(duì)象的查詢返回結(jié)果,或者是直接建立的一個(gè)帶查詢的結(jié)果集。它把從數(shù)據(jù)庫(kù)內(nèi)查詢到的結(jié)果封裝在一起,并提供簡(jiǎn)單快捷的方式去訪問每一條記錄內(nèi)

20、每一字段的數(shù)據(jù),在后面的章節(jié)我們會(huì)詳細(xì)去了解這些方式。 Recordset對(duì)象實(shí)際上是依附于Connection對(duì)象和Command對(duì)象之上的。通過建立及開啟一個(gè)Connection對(duì)象,可以與我們關(guān)心的數(shù)據(jù)庫(kù)建立連線;通過使用Command對(duì)象,則可以告訴數(shù)據(jù)庫(kù)我們想要做什么:是插入一條記錄,還是查找符合條件的記錄;通過使用Recordset對(duì)象,則可以方便自如地操作Command對(duì)象返回的結(jié)果。這三個(gè)對(duì)象中的每個(gè)都是必要的,缺一不可。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 (1) Recordset對(duì)象的屬性 Recordset對(duì)象的常用屬性見表11-7。表11-7 Recordset對(duì)象的常用屬性屬性

21、意義描述ActiveConnection定義了與數(shù)據(jù)提供者的連接信息,用來指定當(dāng)前的RecordSet對(duì)象屬于哪個(gè)Connection對(duì)象Source指示RecordSet對(duì)象的數(shù)據(jù)源,可以是一個(gè)command對(duì)象名、SQL語(yǔ)句、數(shù)據(jù)庫(kù)表或存儲(chǔ)過程CursorType指定RecordSet對(duì)象所使用的光標(biāo)類型LockType表示編輯時(shí)記錄的鎖定類型Filter用來設(shè)定一個(gè)過濾條件,以便對(duì)RecordSet記錄進(jìn)行過濾CacheSize表示一個(gè)RecordSet對(duì)象在高速緩存中的記錄數(shù)Maxrecords執(zhí)行一個(gè)SQL查詢時(shí),返回RecordSet對(duì)象的最大記錄數(shù)Bof判斷記錄指針是否到了第一條

22、記錄之前Eof判斷記錄指針是否到了最后一條記錄之后RecordCount 返回RecordSet對(duì)象的記錄數(shù)(在使用鍵盤光標(biāo)時(shí),該屬性返回的可能是不太準(zhǔn)確的數(shù)值;一般情況下,并不用這種方法來統(tǒng)計(jì)RecordSet中的記錄數(shù),因?yàn)樗男阅懿⒉环€(wěn)定)ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用Bookmark書簽標(biāo)記,用來保存存當(dāng)前記錄的位置AbsolutePosition用來設(shè)定RecordSet對(duì)象中當(dāng)前記錄的順序位置是第幾行記錄PageSize表示RecordSet對(duì)象的頁(yè)面大小(每頁(yè)多少條記錄),默認(rèn)值為10PageCount表示RecordSet對(duì)象的頁(yè)面?zhèn)€數(shù)AbsolutePage表示當(dāng)前記錄的頁(yè)號(hào)Edi

23、tMode指示當(dāng)前記錄的編輯狀態(tài),0 已被編輯;1 已被修改而未提交;2 存入數(shù)據(jù)庫(kù)的新記錄Status對(duì)RecordSet對(duì)象進(jìn)行批量更新后,查詢當(dāng)前記錄的狀態(tài)ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 說明: CursorType屬性指定RecordSet對(duì)象所使用的光標(biāo)類型。不同的光標(biāo)類型決定了對(duì)RecordSet所能做的操作。共有四種光標(biāo)類型:0 - 前滾光標(biāo)(ForwardOnlyCursor),光標(biāo)只能向前移動(dòng),執(zhí)行效率高,是Cursor的默認(rèn)值;1 - 鍵盤光標(biāo)(KeysetCursor),光標(biāo)可向前向后移動(dòng),RecordSet記錄集同步反映自它創(chuàng)建后其他用戶所作的修改和刪除,但卻不能同步反映自它

24、創(chuàng)建后其他用戶新增加的記錄;2 - 動(dòng)態(tài)光標(biāo)(DynamicCursor),光標(biāo)可向前向后移動(dòng),任何時(shí)候RecordSet記錄集都同步反映其他用戶的任何操作;3 - 靜態(tài)光標(biāo)(StaticCursor),光標(biāo)可向前向后移動(dòng),自創(chuàng)建后無法同步反映其他用戶所做的任何操作,它的功能簡(jiǎn)單但消耗資源少。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 LockType屬性表示編輯時(shí)記錄的鎖定類型。它決定了當(dāng)不止一個(gè)用戶試圖同時(shí)改變一個(gè)記錄時(shí),RecordSet如何處理數(shù)據(jù)記錄。它的取值有:0 - 只讀鎖定,記錄只讀,不能更新RecordSet,為L(zhǎng)ockType的默認(rèn)值;1 - 悲觀鎖定,編輯記錄開始立刻鎖定,直到提交給數(shù)據(jù)提

25、供者;2 - 樂觀鎖定,一次鎖定一條記錄,只有調(diào)用Update方法提交數(shù)據(jù)時(shí)才鎖定記錄;3 - 樂觀的批量更新,允許同時(shí)更新多條記錄。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Filter屬性用來設(shè)定一個(gè)過濾條件,以便對(duì)RecordSet記錄進(jìn)行過濾。使用的優(yōu)點(diǎn)是可以在已經(jīng)存在的RecordSet對(duì)象上進(jìn)一步過濾出所需的記錄。但這種方式增加了系統(tǒng)的開銷。它有兩種使用方式: 方式1:使用關(guān)系表達(dá)式,例如:Rs.Filter = bh 30 其中Rs是已經(jīng)創(chuàng)建的RecordSet對(duì)象;bh是RecordSet對(duì)象的字段(數(shù)值型)。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 方式2:使用準(zhǔn)則常量:0 - 清除以前的Filter,允許

26、看見所有記錄;1 - 只允許查看已修改但未提交的記錄;2 - 允許查看最后刪除、Resync、批量更新、或刪除批量方式所影響的記錄;3 - 允許查看數(shù)據(jù)庫(kù)最后讀取結(jié)果的數(shù)據(jù)。例如:Rs.Filter = 1 可以實(shí)現(xiàn)更新整個(gè)批量記錄之前只顯示用戶修改的記錄,使用戶在提交數(shù)據(jù)之前能夠進(jìn)行檢查。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 BookMark屬性用來存儲(chǔ)當(dāng)前記錄的位置。并非每一個(gè)數(shù)據(jù)提供者都支持這個(gè)屬性。當(dāng)創(chuàng)建一個(gè)允許使用BookMark屬性的RecordSet對(duì)象時(shí),給每個(gè)記錄都標(biāo)上一個(gè)獨(dú)一無二的BookMark,利用BookMark可以返回訪問過的記錄。 Status屬性對(duì)于多用戶連接管理特別有用,

27、通過該屬性可以看出更新記錄的失敗原因。它的返回值和意義如表11-8所示。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用表11-8 Status屬性的值和意義值意義描述值意義描述0記錄更新成功1024存在記錄鎖定,新記錄未保存l新紀(jì)錄2048使用樂觀并發(fā)事件,未保存2記錄被修改4096用戶違反完整性規(guī)則,未保存4記錄被刪除8192很多待定修改,記錄未保存8記錄未被修改16384與一存儲(chǔ)對(duì)象相沖突,未保存16書簽不合法,記錄未保存32768內(nèi)存不夠,記錄未保存64影響多個(gè)記錄,未保存65536用戶沒有足夠權(quán)限,未保存128指向一待定插入,記錄未保存131072違反基本數(shù)據(jù)庫(kù)原理,未保存256操作被取消,記錄未保存262

28、144記錄已從數(shù)據(jù)源刪除ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 (2) RecordSet對(duì)象的方法 RecordSet對(duì)象的方法及意義見表11-9。表11-9 RecordSet對(duì)象的方法及意義方法意義描述Open打開一個(gè)RecordSet對(duì)象Close關(guān)閉一個(gè)RecordSet對(duì)象并釋放相關(guān)的資源Clone創(chuàng)建一個(gè)RecordSet對(duì)象的完全拷貝,但只有所用的RecordSet對(duì)象類型允許使用BookMarks時(shí)才能使用該方法MoveFirst把RecordSet指針指向第一行記錄MoveLast把RecordSet指針指向最后一條記錄(該RecordSet必須支持書簽)MovePrevious把Rec

29、ordSet指針上移一行(使用前應(yīng)判斷BOF是否為真;該RecordSet必須支持書簽)Movenext把RecordSet指針下移一行(使用前應(yīng)判斷EOF是否為真)Move把RecordSet指針指向指定的記錄GetPows從一個(gè)RecordSet對(duì)象讀取一行或多行記錄到一個(gè)數(shù)組中NextRecordSet清除當(dāng)前的RecordSet并執(zhí)行下一條指令,以傳回下一個(gè)RecordSet對(duì)象,如果沒有下一條指令則返回Nothing給RecordSetASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用Requery重新執(zhí)行的SQL查詢操作,以更新RecordSet對(duì)象中的數(shù)據(jù)Resync從數(shù)據(jù)源更新當(dāng)前的RecordSet記

30、錄,實(shí)現(xiàn)與數(shù)據(jù)源的同步Addnew增加一條空紀(jì)錄Delete刪除當(dāng)前記錄Update保存當(dāng)前記錄的任何變動(dòng)CancelUpdate取消前一個(gè)Update方法所做的一切修改UpdateBatchRecordSet工作在批量方式時(shí),取消對(duì)RecordSet的更新Suports獲取創(chuàng)建的RecordSet對(duì)象的能力信息 說明: Open方法:打開一個(gè)RecordSet對(duì)象。其語(yǔ)法格式為:Rs.OpenSource, ActiveConnection, CursorType, LockType, OptionASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 其中:Rs為已經(jīng)創(chuàng)建的RecordSet對(duì)象;Source為可選參數(shù)

31、,可以是一個(gè)Command對(duì)象名、SQL字符串存儲(chǔ)過程或數(shù)據(jù)庫(kù)的表名;ActiveConnection參見ActiveConnection屬性;CursorType是RecordSet對(duì)象所使用的光標(biāo)類型,用法參見CursorType屬性;LockTypec是編輯RecordSet對(duì)象記錄時(shí)所使用的鎖定類型,用法參見LockType屬性;Options指示數(shù)據(jù)提供者如何處理Source的內(nèi)容類型,它的取值與意義見表11-5。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 使用Close方法關(guān)閉RecordSet對(duì)象,并不從內(nèi)存中刪除該對(duì)象,只是無法讀取其中的數(shù)據(jù),但仍然可以讀取它的屬性。因此一個(gè)關(guān)閉的Reccord

32、Set對(duì)象還可以用Open方法打開并保持其原有屬性。如果正在進(jìn)行編輯更新數(shù)據(jù)的操作,在調(diào)用Close方法前必須先調(diào)用Update或CancelUpdate方法,否則將會(huì)出現(xiàn)錯(cuò)誤。如果以批量模式更新數(shù)據(jù)記錄(Reccordset的LockType屬性設(shè)為3),那么對(duì)緩沖區(qū)數(shù)據(jù)的修改將全部丟失。另外,使用Clone方法復(fù)制一個(gè)已經(jīng)打開的RecordSet對(duì)象,調(diào)用Close方法不影響任何復(fù)制的RecordSet對(duì)象。 用下面的命令可以釋放RecordSet對(duì)象所占用的所有資源:set Rs = nothingASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Move方法用于把記錄指針指向指定的記錄。其語(yǔ)法格式為:Move

33、 n , start 其中n為要移動(dòng)的記錄數(shù),取正時(shí)表示向前(下)移動(dòng),取負(fù)時(shí)表示向后(上)移動(dòng);start是可選參數(shù),表示移動(dòng)的起點(diǎn)。 使用Move、MoveFirst、MoveLast、MovePrevious、MoveNext方法移動(dòng)記錄指針時(shí),需要注意RecordSet對(duì)象的光標(biāo)類型。如“前滾光標(biāo)”限制了記錄指針只能向前移動(dòng)。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 GetRows方法從一個(gè)RecordSet對(duì)象讀取一行或多行記錄到一個(gè)數(shù)組中,一般用來讀取大量的數(shù)據(jù)。其語(yǔ)法格式為:Myarray = Rs.GetRows(rows, start, fields) 其中Myarray為目標(biāo)數(shù)組名;Rs為

34、已經(jīng)創(chuàng)建的RecordSet對(duì)象;Rows為返回?cái)?shù)組的行數(shù);start為讀取數(shù)據(jù)的起點(diǎn)(書簽);Fields為RecordSet的字段。 AddNew方法用于增加一條空紀(jì)錄。調(diào)用該方法時(shí)在RecordSet對(duì)象中增加一個(gè)新行,并將指針移到行首以準(zhǔn)備保存新數(shù)據(jù)。該方法一般和Update方法相搭配共同完成數(shù)據(jù)更新的任務(wù)。不過這種方法很消耗資源、效率最低,最好用SQL語(yǔ)句來實(shí)現(xiàn)數(shù)據(jù)更新。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 Delete方法用于刪除當(dāng)前記錄。當(dāng)RecordSet工作在批量方式時(shí),可實(shí)現(xiàn)批量刪除。不過該方法非常消耗系統(tǒng)資源,效率非常低。其語(yǔ)法格式為:Delete value 其中value = 1

35、(默認(rèn)值)表示該方法只刪除當(dāng)前記錄;value = 2表示該方法刪除所有由Filter屬性設(shè)定的記錄。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用11.2.2 訪問數(shù)據(jù)庫(kù) 1. 連接到數(shù)據(jù)源 2. 使用Recordset對(duì)象處理結(jié)果ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用1. 連接到數(shù)據(jù)源 (1) 創(chuàng)建連接字符串 創(chuàng)建Web數(shù)據(jù)應(yīng)用程序的第一步是為ADO提供一種定位并標(biāo)識(shí)數(shù)據(jù)源的方法。這一步通過“連接字符串”實(shí)現(xiàn)。連接字符串是一系列用分號(hào)分隔的參數(shù),用于定義諸如數(shù)據(jù)源提供程序和數(shù)據(jù)源位置等參數(shù)。ADO使用連接字符串標(biāo)識(shí)OLE DB提供程序并將提供程序指向數(shù)據(jù)源。提供程序是一個(gè)組件,用來描述數(shù)據(jù)源并以行集合的形式將信息展示給應(yīng)用程

36、序。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 表11-10列出了幾種通用數(shù)據(jù)源的OLE DB連接字符串。表11-10 常用的通用數(shù)據(jù)源的OLE DB連接字符串?dāng)?shù)據(jù)源OLE DB連接字符串Microsoft AccessProvider=Microsoft.Jet.OLEDB.4.0;Source=指向.mdb文件的物理路徑Microsoft SQL ServerProvider=SQLOLEDB.1;Source=指向服務(wù)器上數(shù)據(jù)庫(kù)的路徑OracleProvider=MSDAORA.1;Source=指向服務(wù)器上數(shù)據(jù)庫(kù)的路徑Microsoft Indexing ServiceProvider=MSIDXS.1

37、;Source=指向文件的路徑 為了向后兼容性,ODBC的OLE DB提供程序支持ODBC連接字符串語(yǔ)法。表11-11列出了常用的ODBC連接字符串。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用表11-11 常用的ODBC連接字符串?dāng)?shù)據(jù)源驅(qū)動(dòng)程序ODBC連接字符串Microsoft AccessDriver=Microsoft Access Driver (*.mdb);DBQ=指向.mdb文件的物理路徑SQL ServerrDriver=SQL Server;SERVER=指向服務(wù)器的路徑OracleDriver=Microsoft ODBC for Oracle;SERVER=指向服務(wù)器的路徑Microsof

38、t ExcelDriver=Microsoft Excel Driver (*.xls);DBQ=指向.xls文件的物理路徑; DriverID =278Microsoft Excel 97Driver=Microsoft Excel Driver (*.xls);DBQ=指向.xls文件的物理路徑;DriverID=790ParadoxDriver=Microsoft Paradox Driver (*.db);DBQ=指向.db文件的物理路徑; DriverID=26文本Driver=Microsoft Text Driver (*.txt;*.csv); DefaultDir=指向.tx

39、t文件的物理路徑Microsoft Visual FoxPro(帶有一個(gè)數(shù)據(jù)庫(kù)容器)Driver=Microsoft Visual FoxPro Driver;SourceType=DBC;SourceDb=指向.dbc文件的物理路徑Microsoft Visual FoxPro(不帶數(shù)據(jù)庫(kù)容器)Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDb=指向.dbf文件的物理路徑ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用 (2) 連接到數(shù)據(jù)源 ADO提供的Connection對(duì)象,用于建立和管理應(yīng)用程序與OLE DB兼容數(shù)據(jù)源或ODBC兼容數(shù)據(jù)庫(kù)

40、之間的連接。Connection對(duì)象的屬性和方法可以用來打開和關(guān)閉數(shù)據(jù)庫(kù)連接,并發(fā)布對(duì)更新信息的查詢。 要建立數(shù)據(jù)庫(kù)連接,首先必須創(chuàng)建Connection對(duì)象實(shí)例。下述代碼創(chuàng)建Connection對(duì)象實(shí)例,接著打開一個(gè)連接: 創(chuàng)建connection對(duì)象Set conn = Server.CreateObject(ADODB.Connection) 使用OLE DB連接字符串打開連接conn.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source =C:MarketDatarsgl.mdbASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用或 創(chuàng)建connection對(duì)象 se

41、t conn=server.createobject(adodb.Connection) 創(chuàng)建OLE DB連接字符串 CS=Provider=Microsoft.jet.OLEDB.4.0;Data Source= conn.ConnectionString=CS & Server.MapPath(rsgl.mdb) 打開連接 說明: 連接字符串在等號(hào)(=)的左右不包含空格。 在上例中,Connection對(duì)象的Open方法將引用連接字符串。ASP與數(shù)據(jù)庫(kù)簡(jiǎn)介和應(yīng)用2. 使用Recordset對(duì)象處理結(jié)果 建立了連接對(duì)象Connection,并打開了數(shù)據(jù)庫(kù)連接后,就可以使用Recordset對(duì)象存取表中的記錄。 要使用Recordset對(duì)象處理結(jié)果,首先必須創(chuàng)建Recordset對(duì)象實(shí)例。下述代碼創(chuàng)建Recordset對(duì)象實(shí)例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論