使用ADO訪問數(shù)據(jù)庫課件_第1頁
使用ADO訪問數(shù)據(jù)庫課件_第2頁
使用ADO訪問數(shù)據(jù)庫課件_第3頁
使用ADO訪問數(shù)據(jù)庫課件_第4頁
使用ADO訪問數(shù)據(jù)庫課件_第5頁
已閱讀5頁,還剩165頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第13章使用ADO訪問數(shù)據(jù)庫13.1ASP與ADO

13.2建立連接13.3Recordset對象13.4Command對象第13章使用ADO訪問數(shù)據(jù)庫13.1ASP與ADO ASP提供了強(qiáng)大的訪問數(shù)據(jù)庫的功能。用ASP訪問數(shù)據(jù)庫所使用的是ADO(ActiveXDataObjects)組件。 使用ADO編寫的ASP程序,不僅能夠訪問Access數(shù)據(jù)庫,能夠訪問包括Oracle、MSSQLServer、Sybase等支持OLEDB、ODBC的數(shù)據(jù)庫。 ASP提供了強(qiáng)大的訪問數(shù)據(jù)庫的功能。用ASP訪問數(shù)據(jù)庫所13.1ASP與ADO13.1.1ASP與數(shù)據(jù)庫 通過ADO對象,ASP可以訪問Oracle、Sybase、MSSQLServer、Access、FoxPro等各種支持ODBC或OLEDB的數(shù)據(jù)庫。也就是說,只要具有某種數(shù)據(jù)庫的ODBC或OLEDB驅(qū)動程序,就可以通過ADO訪問數(shù)據(jù)庫。ASP、ADO、OLEDB及各種數(shù)據(jù)庫之間的關(guān)系如圖13-1所示。13.1ASP與ADO13.1.1ASP與數(shù)據(jù)庫第13章使用ADO訪問數(shù)據(jù)庫課件13.1.2ADO的概念和結(jié)構(gòu) ODBC(OpenDatabaseConnectivity)是微軟公司開發(fā)的一套開放數(shù)據(jù)庫應(yīng)用程序的接口規(guī)范,是廣泛使用的數(shù)據(jù)庫接口。使用ODBC開發(fā)數(shù)據(jù)庫應(yīng)用程序的方法是建立ODBC數(shù)據(jù)源,通過ODBC接口函數(shù),提交SQL語句并接收執(zhí)行SQL命令的結(jié)果。數(shù)據(jù)庫的底層操作由各個數(shù)據(jù)庫的驅(qū)動程序完成。13.1.2ADO的概念和結(jié)構(gòu) OLEDB是以ActiveX技術(shù)為基礎(chǔ)的數(shù)據(jù)訪問技術(shù)標(biāo)準(zhǔn)。OLEDB基于組件模型;可以訪問多種格式的數(shù)據(jù),包括數(shù)據(jù)庫的數(shù)據(jù)和非數(shù)據(jù)庫的數(shù)據(jù)。OLEDB標(biāo)準(zhǔn)的具體實現(xiàn)是一組API函數(shù)。使用OLEDBAPI,可以編寫能夠訪問符合OLEDB標(biāo)準(zhǔn)的任何數(shù)據(jù)源應(yīng)用程序。 OLEDB是以ActiveX技術(shù)為基礎(chǔ)的數(shù)據(jù)訪問技術(shù)標(biāo) 為了使各種流行的編程語言都能編寫符合OLEDB標(biāo)準(zhǔn)的應(yīng)用程序,微軟公司在OLEDBAPI之上提供了一種面向?qū)ο蟮?、與語言無關(guān)的應(yīng)用程序編寫接口,就是ADO。 ADO是一項數(shù)據(jù)庫訪問技術(shù)。ADO具有如下優(yōu)點。 為了使各種流行的編程語言都能編寫符合OLEDB標(biāo)準(zhǔn)的應(yīng) 對于程序設(shè)計者而言,ADO很容易掌握和使用。 ADO能夠被VisualBasic、Java、C++、VBScript及Jscript等程序設(shè)計語言所支持。 ADO能夠訪問各種支持OLEDB的數(shù)據(jù)源,也就是說,通過ADO能夠訪問具有OLEDB驅(qū)動程序的數(shù)據(jù)源。 ADO允許C++的程序員訪問OLEDB的底層接口。 對于程序設(shè)計者而言,ADO很容易掌握和使用。 ADO包括7個對象及集合,其主要作用描述如下。(1)Connection對象 Connection對象用于建立數(shù)據(jù)源與ADO應(yīng)用程序之間的連接。 ADO包括7個對象及集合,其主要作用描述如下。(2)Recordset對象 Recordset對象是ADO中最重要的對象之一,是對數(shù)據(jù)庫進(jìn)行檢索后的數(shù)據(jù)記錄集。這個記錄集既可以是Command對象返回的查詢結(jié)果,也可以是直接運(yùn)行SQL命令產(chǎn)生的查詢結(jié)果。Recordset對象把數(shù)據(jù)庫檢索的結(jié)果封裝在一起,并通過它的方法和屬性提供一種方便、快捷地訪問每條記錄、每個字段的方法。(2)Recordset對象(3)Command對象 Command對象用于定義數(shù)據(jù)庫的查詢動作,一般使用SQL命令,也可以使用存儲過程。 Command對象允許指定參數(shù),其參數(shù)通過Parameter對象賦值、使用。(3)Command對象(4)Parameter對象 Parameter對象的作用是將存儲過程和參數(shù)查詢所需的參數(shù)傳遞給Command對象。存儲過程是SQL語言的過程。一個Command對象上的所有Parameter對象構(gòu)成Parameters集合。(4)Parameter對象(5)Field對象 Field對象能夠使我們讀取記錄集(Recordset)對象中各個字段的字段值。定義在一個Recordset對象上的所有Field對象構(gòu)成Fields集合。(5)Field對象(6)Property對象 Property對象能夠指明一個ADO對象的屬性。所有的Property對象構(gòu)成Properties集合。這個集合與Connection、Command、Recordset或Field對象相關(guān)聯(lián)。(6)Property對象(7)Error對象 Error對象的作用是返回一個數(shù)據(jù)庫連接(Connection)上產(chǎn)生的錯誤。 ADO對象及集合的關(guān)系如圖13-2所示。(7)Error對象第13章使用ADO訪問數(shù)據(jù)庫課件 在ADO的對象中,Connection、Command和Recordset三個對象是頂層對象,也是最重要的對象。我們能夠單獨的創(chuàng)建、釋放這三個對象。而其他對象,盡管可以單獨創(chuàng)建對象,但是在使用之前,必須與有關(guān)的對象相關(guān)聯(lián)。Field、Error和Property對象在其雙親對象存在的情況下才存在,不能單獨的創(chuàng)建這些對象。 在ADO的對象中,Connection、Command Connection對象用于建立應(yīng)用程序與數(shù)據(jù)庫的連接。在這個基礎(chǔ)之上,可以使用Command對象和Recordset對象對所連接的數(shù)據(jù)庫進(jìn)行各種操作。Command對象用于定義數(shù)據(jù)庫的查詢操作,主要采用SQL語言描述查詢動作。Recordset對象對應(yīng)于Command對象的返回結(jié)果。當(dāng)然Recordset對象也可以直接建立一個Recordset,即不顯式地為Recordset創(chuàng)建Connection或Command對象,但實際上通過Recordset對象的一些參數(shù)設(shè)置了Connection對象和Command對象的屬性。 Connection對象用于建立應(yīng)用程序與數(shù)據(jù)庫的連接。13.2建立連接

13.2.1使用Connection對象建立連接 Connection對象用于應(yīng)用程序與服務(wù)器之間的連接。使用Connection對象可以確定以何種方式建立與服務(wù)器的連接,設(shè)置查詢條件,檢查整個處理過程中發(fā)生的錯誤。13.2建立連接13.2.1使用Connec1.建立和關(guān)閉連接對象建立Connection對象的方法如下。<% DimobjCn setobjCn=Server.CreateObject ("ADODB.Connection")%>1.建立和關(guān)閉連接對象 “Server.CreateObject”的含義是執(zhí)行ASP內(nèi)置的Server對象的CreateObject方法,創(chuàng)建一個“ADODB.Connection”對象。新創(chuàng)建的連接對象實例被賦值給對象變量“objCn”,即ObjCn就是與數(shù)據(jù)庫建立連接的對象變量。 關(guān)閉Connection對象的方法是: <% objCn.Close %> “Server.CreateObject”的含義是執(zhí)行A “Close”是Connection對象的方法,其作用是關(guān)閉Connection對象,將應(yīng)用程序與數(shù)據(jù)庫的連接斷開。但objCn仍在內(nèi)存中,沒有釋放所占用的空間。釋放對象變量的方法是: <% setobjCn=nothing %> “Close”是Connection對象的方法,其作用是2.與數(shù)據(jù)源建立連接 建立連接對象,僅僅是創(chuàng)建了一個Connection對象的實例,并沒有真正地與一個數(shù)據(jù)庫建立起連接。建立連接的操作通過Connection對象的Open方法實現(xiàn)。2.與數(shù)據(jù)源建立連接 Connection對象的Open方法的基本語法格式如下<連接對象名>.OpenConnectionString ConnectionString是連接參數(shù),指明了連接的數(shù)據(jù)庫類型、名稱等。 Connection對象的Open方法的基本語法格式如下 需要說明的是,建立連接等操作的成功與否,在瀏覽器上沒有任何顯示。 不同類別的數(shù)據(jù)庫,具有不同的驅(qū)動程序,相應(yīng)的具有不同的連接參數(shù)和格式。 需要說明的是,建立連接等操作的成功與否,在瀏覽器上沒有任13.2.2Connection對象的屬性1.CommandTimeOut屬性

CommandTimeOut屬性用于設(shè)置等待時間。在使用Connection對象的Execute方法運(yùn)行一個查詢時,如果由于網(wǎng)絡(luò)負(fù)擔(dān)過重或其他原因造成在指定的CommandTimeOut時間內(nèi)未能完成有關(guān)操作,則系統(tǒng)會自動取消Execute方法的執(zhí)行。13.2.2Connection對象的屬性 如果將CommandTimeOut的屬性值設(shè)為0,則系統(tǒng)無限期等待命令的執(zhí)行。默認(rèn)值為30秒。2.ConnectionString屬性 ConnectionString屬性指定了與數(shù)據(jù)庫建立連接的參數(shù),包括所連接的數(shù)據(jù)庫類型、名稱等。連接參數(shù)是由若干形如“參數(shù)=值;”的表達(dá)式連接而成。 如果將CommandTimeOut的屬性值設(shè)為0,則系統(tǒng)3.ConnectionTimeOut屬性 ConnectionTimeOut屬性用于設(shè)置執(zhí)行Open方法時的超時時間。當(dāng)超過指定的ConnectionTimeOut時間仍未完成連接操作,系統(tǒng)自動終止Open方法的執(zhí)行。如果設(shè)置ConnectionTimeOut為0,則程序一直等待Open方法的執(zhí)行,直到連接成功。ConnectionTimeOut屬性的默認(rèn)值為15秒。3.ConnectionTimeOut屬性4.DefaultDatabase屬性 DefaultDatabase屬性可以設(shè)置或返回Connection對象的默認(rèn)數(shù)據(jù)庫。4.DefaultDatabase屬性13.2.3通過Connection對象執(zhí)行查詢命令 ADO的Connection對象的主要作用是建立數(shù)據(jù)庫的連接。實際上,Connection對象還可以直接執(zhí)行查詢命令。使用Connection對象的Execute方法能夠執(zhí)行指定的SQL查詢命令或由SQL命令構(gòu)成的文本。13.2.3通過Connection對象執(zhí)行查詢命令 Execute方法格式如下:<連接對象>.ExecuteCommandText[,RecordsetAffectd][,Options] 其中的“CommandText”是包含表名的SQL語句?!癛ecordsetAffectd”是可選參數(shù),若需要知道執(zhí)行該命令所影響的記錄數(shù),可以在此放置一個變量,待命令執(zhí)行完畢,檢查該變量的值即可?!癘ptions”是可選參數(shù),用于指定CommandText的類型,如存儲過程、命令等。 Execute方法格式如下:13.3Recordset對象 從數(shù)據(jù)庫中讀取的數(shù)據(jù)記錄通過Recordset對象處理。使用Recordset對象,可以對數(shù)據(jù)庫中數(shù)據(jù)表的數(shù)據(jù)進(jìn)行各種操作,如插入記錄、刪除記錄、更新記錄、檢索數(shù)據(jù)等。Recordset對象保存數(shù)據(jù)的方式類似于二維表,包括字段和記錄。13.3Recordset對象 從數(shù)據(jù)庫中讀取的數(shù)據(jù)記13.3.1建立Recordset對象 使用Recordset對象時,需要聲明一個Recordset對象的實例,即創(chuàng)建一個Recordset對象的對象變量。其語法格式如下:Set對象變量=Server.CreateObject(“ADODB.Recordset”)13.3.1建立Recordset對象 以上命令的含義是建立一個ADODB.Recordset類型的對象,并賦值給對象變量。對象變量建立后,可以使用Open方法建立一個Recordset。Recordset對象的Open方法的基本格式如下。<對象名>.OpenSource,ConnectionString Source是一個SQL命令,也就是查詢要求。ConnectionString是連接參數(shù)。 以上命令的含義是建立一個ADODB.Recordset類 例如,從課程管理數(shù)據(jù)庫中讀取學(xué)生的基本信息,可以使用如下的命令。<% setRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("課程管理.mdb") RS.Open"Select*fromStudent",cnStr%> 例如,從課程管理數(shù)據(jù)庫中讀取學(xué)生的基本信息,可以使用如下 需要說明的是可以使用多種方式建立Recordset對象。一種方式就是上面提到的直接使用Recordset對象的Open方法建立Recordset。另一種方法是首先建立一個Connection對象,然后使Connection對象與Recordset對象建立關(guān)聯(lián),從而得到建立了連接的Recordset對象。還有一種方法是通過Connection對象的Execute方法執(zhí)行有關(guān)查詢,產(chǎn)生Recordset對象,還可以通過Command對象建立Recordset對象。 需要說明的是可以使用多種方式建立Recordset對象。13.3.2使用Recordset訪問數(shù)據(jù)庫

從Recordset對象中讀取數(shù)據(jù)記錄時需要使用“記錄指針”。從數(shù)據(jù)庫中讀取數(shù)據(jù)、建立Recordset后,有一個“記錄指針”指向第一條記錄。此時,可以讀取這條記錄中各個字段的數(shù)據(jù),而且只能讀取這條記錄的數(shù)據(jù)。就是說,在同一個時刻只能讀取當(dāng)前記錄中的數(shù)據(jù),即記錄指針?biāo)赶虻挠涗?。如果要讀取其他記錄的數(shù)據(jù)時,必須把“記錄指針”移動到要訪問的記錄上。13.3.2使用Recordset訪問數(shù)據(jù)庫1.讀取數(shù)據(jù)例13.3讀取Recordset中的字段。<%@Language=VBScript%><HTML><HEAD>使用Recordset讀取數(shù)據(jù)<P>1.讀取數(shù)據(jù)</HEAD><BODY><% SetRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("課程管理.mdb") RS.Open"Select*fromstudent",cnStr </HEAD>ifNotRS.EOFthen tmpNumber=RS("SNumber") tmpName=RS("SName") tmpSex=RS("SSex") tmpBirthDay=RS("SBirthday") tmpAddr=RS("SAddress") tmpZip=RS("SZip") tmpSign=RS("SSign") endif

ifNotRS.EOFthenResponse.WritetmpNumber+tmpName%></BODY></HTML>Response.WritetmpNumber+tmpNa2.輸入數(shù)據(jù) 除了前面提到的使用Connection對象的Execute方法執(zhí)行SQL命令插入記錄之外,還可以使用Recordset對象插入記錄。具體做法是首先在Recordset中添加一個空白記錄,然后,為各個字段賦值。2.輸入數(shù)據(jù)例13.4以下是在記錄集中添加一條新記錄的示例。<%RS.AddNewRS("SNumber")="98082210"RS("SName")="張紅"RS("SSex")="女"RS("出生日期")=Cdate("1980-2-10")RS("地址")="白頤路20號"RS("郵政編碼")="100080"RS("入學(xué)成績")=480RS.Update%>例13.4以下是在記錄集中添加一條新記錄的示例。3.刪除記錄 Recordset提供了刪除對象的方法。 Recordset對象的Delete方法的作用是刪除當(dāng)前記錄指針?biāo)赶虻挠涗洠? <% Rs.Delete %>3.刪除記錄13.3.3Recordset對象的主要屬性 1.AbsolutePage屬性 AbsolutePage屬性可以返回當(dāng)前記錄所在頁的絕對頁號,也可以指定當(dāng)前記錄應(yīng)該放置在哪頁。13.3.3Recordset對象的主要屬性 2.AbsolutePosition屬性 當(dāng)前記錄指針的絕對位置。在正常情況下,其值在1-RecordCount(Recordset對象中記錄的個數(shù))之間,或是常數(shù)值。在Recordset內(nèi),第一條記錄對應(yīng)的AbsolutePosition值為1;最后一條記錄的AbsolutePosition值為RecordCount。2.AbsolutePosition屬性3.ActiveConnection屬性

ActiveConnection屬性是包含連接信息的連接字符串,包括數(shù)據(jù)源、用戶名、口令等。如果已經(jīng)建立了連接,通過ActiveConnection屬性,Recordset對象和Command對象能夠與Connection對象建立關(guān)聯(lián)。我們可以通過ActiveConnection屬性使Connection對象和Recordset對象建立關(guān)聯(lián)。我們還可以通過ActiveConnection屬性讀取與當(dāng)前數(shù)據(jù)庫的連接有關(guān)的參數(shù)。3.ActiveConnection屬性4.BOF屬性 BOF屬性檢查、判明當(dāng)前記錄指針是否在第一條記錄之前,并返回檢查的結(jié)果。如果當(dāng)前記錄指針已經(jīng)移到第一條記錄之前,BOF為真;否則為假。一般情況下,在向前移動記錄指針時,通過檢測BOF的值,可以判斷是否已經(jīng)到達(dá)第一條記錄之前。4.BOF屬性5.CursorLocation屬性 Cursor稱為游標(biāo)。CursorLocation屬性用于選擇所使用的游標(biāo)庫。當(dāng)CursorLocation的值為2,其常數(shù)定義為adUseServer,表示使用服務(wù)器端的游標(biāo)庫。當(dāng)CursorLocation的值為1,其常數(shù)定義為adUseClient,表示使用客戶端的游標(biāo)庫。5.CursorLocation屬性6.CursorType屬性 在使用Recordset讀取數(shù)據(jù)時涉及到使用記錄指針。不同類型的記錄指針具有不同的指針移動方式。在打開Recordset時,需要指定記錄指針的類型,即CursorType屬性。系統(tǒng)提供了四種CursorType值,其含義和屬性值見表13-2。6.CursorType屬性第13章使用ADO訪問數(shù)據(jù)庫課件7.EditMode屬性 EditMode屬性能夠返回Recordset對象當(dāng)前的編輯模式:0表示目前處理的Recordset中沒有任何編輯操作;1表示正在進(jìn)行編輯操作,但是尚未保存到數(shù)據(jù)庫中;2表示正在增加記錄,但是尚未保存到數(shù)據(jù)庫中;4表示當(dāng)前記錄被刪除。7.EditMode屬性8.EOF屬性 EOF屬性用于判斷記錄指針是否到達(dá)Recordset的末尾。當(dāng)EOF的值為True,表示記錄指針位于最后一條記錄之后。9.Filter屬性 Filter屬性可以在Recordset對象中設(shè)置對數(shù)據(jù)的篩選條件,使被過濾出來的Recordset成為當(dāng)前Recordset。8.EOF屬性10.LockType屬性 LockType屬性用于設(shè)置當(dāng)前記錄的鎖定方式,以確定是否可以將記錄寫入數(shù)據(jù)庫。11.MaxRecords屬性 MaxRecords屬性用于設(shè)置從數(shù)據(jù)源一次返回的最大記錄數(shù)。MaxRecords屬性的默認(rèn)值為0,表示返回所有記錄。10.LockType屬性12.PageCount屬性 PageCount屬性指明當(dāng)前Recordset對象所包含的頁數(shù)。每一頁包括一組記錄,其記錄的數(shù)量由PageSize屬性設(shè)置。13.PageSize屬性 當(dāng)Recordset對象設(shè)置了分頁,使用PageSize屬性設(shè)置每頁的記錄數(shù)。PageSize屬性的默認(rèn)值為10,即每一頁有10條記錄。12.PageCount屬性14.RecordCount屬性 使用RecordCount屬性能夠確定Recordset中有多少條記錄。如果ADO無法判斷記錄總數(shù),則返回-1。需要說明的是如果Recordset以adOpenForwardOnly方式打開,則RecordCount屬性不起作用。14.RecordCount屬性15.Source屬性 Source屬性指明Recordset對象的數(shù)據(jù)來源。16.State屬性 State屬性可以返回Recordset對象的狀態(tài)。15.Source屬性17.Status屬性 Status屬性能夠返回記錄處理是否成功的信息。13.3.4Recordset的主要方法1.Open方法 Open方法的完整格式如下。對象變量.OpenSource,Connection,CursorType,LockType,Type17.Status屬性 Open方法中各項參數(shù)的含義如下。 “Source”是一個字符串。指明要從數(shù)據(jù)庫中選取的數(shù)據(jù)。數(shù)據(jù)源可以是Command對象、SQL語句、存儲過程、表名或文件的全路徑。 Open方法中各項參數(shù)的含義如下。 Connection表示數(shù)據(jù)庫連接的名稱。可以使用三種方式表達(dá)所要連接的數(shù)據(jù)庫。第一種方式是直接使用已經(jīng)建立連接的Connection對象變量;第二種方式使用連接參數(shù)字符串;第三種方式使用ODBC數(shù)據(jù)源名稱。連接參數(shù)可以通過Recordset對象的ConnectionString屬性設(shè)置。

Connection表示數(shù)據(jù)庫連接的名稱??梢允褂? CursorType指明Recordset對象打開數(shù)據(jù)庫時所使用的記錄指針類型。 LockType是可選參數(shù),它確定了打開Recordset對象時的鎖定類型。

Type是可選參數(shù),用于指定打開Recordset對象時對應(yīng)的Command對象的CommandType類型。 CursorType指明Recordset對象打開2.Close方法 Close方法的作用是關(guān)閉一個Recordset對象,釋放相關(guān)的數(shù)據(jù),即為這個Recordset所申請的資源。使用Close方法不能將Recordset對象從內(nèi)存中清除。 釋放對象變量的命令如下。Set<對象名>=nothing2.Close方法3.Update方法 Update方法的功能是將Recordset對象中當(dāng)前記錄保存到數(shù)據(jù)庫中。4.AddNew方法 AddNew方法的作用是在Recordset對象中添加一條記錄。AddNew方法的語法格式如下。Recoreset.AddNewFieldList,Values3.Update方法 其中FieldList是一個字段或字段數(shù)組的名稱;Values是相應(yīng)的一個字段值或用數(shù)組表示的字段值。FieldList和Values都是可選參數(shù)。如果使用沒有參數(shù)的AddNew方法,則在Recordset中插入一個空白記錄。 其中FieldList是一個字段或字段數(shù)組的名稱;Val 使用AddNew方法向Recordset中添加記錄的方法有兩種:一種方法是在Recordset中添加一個空白記錄,再向這個空白記錄的字段中輸入數(shù)據(jù);另一種方法是先為數(shù)組賦值,再使用AddNew方法將數(shù)組中的數(shù)據(jù)添加到Recordset中。需要特別注意的是使用AddNew方法添加到Recordset中的數(shù)據(jù)并沒有保存到數(shù)據(jù)庫中,必須使用Update方法才能真正將Recordset中的數(shù)據(jù)保存到數(shù)據(jù)庫中。 使用AddNew方法向Recordset中添加記錄的方法5.Delete方法 使用Delete方法能夠刪除Recordset對象中一條或多條記錄。Delete方法的語法格式如下。Recordset.DeleteAffect 以上命令中的Affect表示刪除數(shù)據(jù)的范圍。當(dāng)該參數(shù)的值為1時,只能刪除當(dāng)前的記錄;參數(shù)的值為2時,則可以將所有與Filter屬性所設(shè)條件相匹配的記錄刪除掉。5.Delete方法6.移動記錄指針的方法 從數(shù)據(jù)庫中讀取的數(shù)據(jù)都被放在Recordset對象中。而對Recordset對象中的數(shù)據(jù)進(jìn)行操作時需要使用記錄指針。Recordset對象提供了一組移動記錄指針的方法,使用這一組方法,就能夠比較方便的操作數(shù)據(jù)。6.移動記錄指針的方法(1)MoveNumRecords “MoveNumRecords,Start”方法的作用是在Recordset對象內(nèi),將記錄指針從“Start”位置開始移動“NumRecords”條記錄。(2)MoveFirst “MoveFirst”方法的作用是在Recordset對象內(nèi),將記錄指針移動到第一條記錄上。(1)MoveNumRecords(3)MoveLast “MoveLast”方法的作用是在Recordset對象內(nèi),將記錄指針移動到最后一條記錄上。(4)MoveNext “MoveNext”方法的作用是在Recordset對象內(nèi),將記錄指針向后(即記錄號增加的方向)移動一條記錄。(3)MoveLast(5)MovePrevious “MovePrevious”方法的作用是在Recordset對象內(nèi),將記錄指針向前移動一條記錄。(5)MovePrevious7.CancelUpdate方法 當(dāng)Recordset中的記錄尚未寫到數(shù)據(jù)庫中時,也就是說,在Recordset中插入、刪除或更新了數(shù)據(jù),但是還沒有使用Update方法時,若需要撤銷對Recordset中記錄的更新操作,可以使用CancelUpdate方法。CancelUpdate方法的功能是取消對Recordset對象的更新操作。7.CancelUpdate方法8.Clone方法 Clone方法的功能是復(fù)制某個已經(jīng)存在的Recordset對象。復(fù)制得到的新Recordset對象與原來的Recordset對象具有相同的記錄集,但是各自擁有獨立的記錄指針。8.Clone方法13.3.5Recordset的Fields集合 Recordset提供了一個Fields集合,F(xiàn)ields集合的每一項都是一個Field對象。每個Field對象擁有一個名字及序號,分別對應(yīng)數(shù)據(jù)庫表中的字段。 我們可以利用Fields集合的Count屬性讀取表中的字段個數(shù),使用Field對象的Name和Value分別讀取字段名稱和字段數(shù)據(jù)。13.3.5Recordset的Fields集合13.4Command對象 Command對象能夠用來執(zhí)行查詢命令,并將滿足條件的記錄返回到Recordset對象。Command對象所執(zhí)行的這些命令可以是SQL語句、存儲過程、數(shù)據(jù)庫表或系統(tǒng)能夠支持的其他格式的文件。13.4Command對象 Command對象能夠用來13.4.1建立Command對象 建立Command對象的方法是使用ASP內(nèi)置的Server對象的CreateObject方法,命令格式如下。Set<對象名>=Server.CreateObject("ADODB.Command") 其中“對象名”所表示的是Command對象的一個實例。然后,需要將這個對象實例與Connection對象建立連接。13.4.1建立Command對象 與Recordset對象不同,Command對象不需要直接進(jìn)行打開和關(guān)閉的操作。當(dāng)關(guān)閉一個Connection對象時,與該連接相關(guān)的所有Command對象同時被關(guān)閉,不需要單獨使用關(guān)閉命令。 與Recordset對象不同,Command對象不需要直13.4.2Command對象的主要屬性1.ActiveConnection屬性 ActiveConnection屬性指明了當(dāng)前Command對象所連接的Connection對象。如果在執(zhí)行Execute方法時,尚未指定合法的連接參數(shù),或者沒有打開一個可用的Connection對象,系統(tǒng)會產(chǎn)生錯誤。13.4.2Command對象的主要屬性2.CommandType屬性 Command對象能夠使用多種類型的查詢命令。用CommandType屬性能夠確定查詢命令的類型。實際上,這些類型與Recordset對象Open方法中指定的Type類型是一致的。2.CommandType屬性3.CommandText屬性 CommandType屬性值是指明查詢命令的類型,查詢命令的具體內(nèi)容則由CommandText屬性確定。CommandText屬性可以是SQL語句、數(shù)據(jù)庫表名或存儲過程名。3.CommandText屬性4.CommandTimeout屬性 默認(rèn)情況下,若執(zhí)行Command對象的等待時間超過30秒仍然沒有結(jié)束,則停止執(zhí)行命令。如果需要改變這個等待時間,可以改變CommandTimeout屬性,重新設(shè)置等待時間。若設(shè)置CommandTimeout屬性為0,則系統(tǒng)無限期等待命令的執(zhí)行,直到完成。4.CommandTimeout屬性 需要說明的是Connection對象也有一個CommandTimeOut屬性。但是Connection對象的CommandTimeOut屬性與Command對象的CommandTimeOut屬性是彼此獨立的,相互之間不會有影響。 需要說明的是Connection對象也有一個Comman13.4.3Command的常用方法1.Execute方法 Execute是Command對象的一個非常重要的方法。使用Execute方法能夠執(zhí)行在CommandText中定義的查詢命令。如果所執(zhí)行的查詢有返回記錄,則查詢結(jié)果存放在Recordset對象中。13.4.3Command的常用方法Execute的語法格式如下。Set<記錄集名稱>=Command.Execute(Count,Parameter,Option)Execute的語法格式如下。 其中Count是可選參數(shù),表示執(zhí)行本次查詢數(shù)據(jù)庫中滿足指定條件的記錄數(shù);Parameter是可選參數(shù),包含需要傳遞給存儲過程的參數(shù);Option也是可選參數(shù),指明CommandText的類型,實際上就是CommandType的屬性值,可以省略。 其中Count是可選參數(shù),表示執(zhí)行本次查詢數(shù)據(jù)庫中滿足指2.CreateParamater方法 在使用SQL命令或存儲過程進(jìn)行查詢時,查詢條件中往往需要指定一些參數(shù),然后按指定的參數(shù)進(jìn)行查詢。2.CreateParamater方法第13章使用ADO訪問數(shù)據(jù)庫13.1ASP與ADO

13.2建立連接13.3Recordset對象13.4Command對象第13章使用ADO訪問數(shù)據(jù)庫13.1ASP與ADO ASP提供了強(qiáng)大的訪問數(shù)據(jù)庫的功能。用ASP訪問數(shù)據(jù)庫所使用的是ADO(ActiveXDataObjects)組件。 使用ADO編寫的ASP程序,不僅能夠訪問Access數(shù)據(jù)庫,能夠訪問包括Oracle、MSSQLServer、Sybase等支持OLEDB、ODBC的數(shù)據(jù)庫。 ASP提供了強(qiáng)大的訪問數(shù)據(jù)庫的功能。用ASP訪問數(shù)據(jù)庫所13.1ASP與ADO13.1.1ASP與數(shù)據(jù)庫 通過ADO對象,ASP可以訪問Oracle、Sybase、MSSQLServer、Access、FoxPro等各種支持ODBC或OLEDB的數(shù)據(jù)庫。也就是說,只要具有某種數(shù)據(jù)庫的ODBC或OLEDB驅(qū)動程序,就可以通過ADO訪問數(shù)據(jù)庫。ASP、ADO、OLEDB及各種數(shù)據(jù)庫之間的關(guān)系如圖13-1所示。13.1ASP與ADO13.1.1ASP與數(shù)據(jù)庫第13章使用ADO訪問數(shù)據(jù)庫課件13.1.2ADO的概念和結(jié)構(gòu) ODBC(OpenDatabaseConnectivity)是微軟公司開發(fā)的一套開放數(shù)據(jù)庫應(yīng)用程序的接口規(guī)范,是廣泛使用的數(shù)據(jù)庫接口。使用ODBC開發(fā)數(shù)據(jù)庫應(yīng)用程序的方法是建立ODBC數(shù)據(jù)源,通過ODBC接口函數(shù),提交SQL語句并接收執(zhí)行SQL命令的結(jié)果。數(shù)據(jù)庫的底層操作由各個數(shù)據(jù)庫的驅(qū)動程序完成。13.1.2ADO的概念和結(jié)構(gòu) OLEDB是以ActiveX技術(shù)為基礎(chǔ)的數(shù)據(jù)訪問技術(shù)標(biāo)準(zhǔn)。OLEDB基于組件模型;可以訪問多種格式的數(shù)據(jù),包括數(shù)據(jù)庫的數(shù)據(jù)和非數(shù)據(jù)庫的數(shù)據(jù)。OLEDB標(biāo)準(zhǔn)的具體實現(xiàn)是一組API函數(shù)。使用OLEDBAPI,可以編寫能夠訪問符合OLEDB標(biāo)準(zhǔn)的任何數(shù)據(jù)源應(yīng)用程序。 OLEDB是以ActiveX技術(shù)為基礎(chǔ)的數(shù)據(jù)訪問技術(shù)標(biāo) 為了使各種流行的編程語言都能編寫符合OLEDB標(biāo)準(zhǔn)的應(yīng)用程序,微軟公司在OLEDBAPI之上提供了一種面向?qū)ο蟮?、與語言無關(guān)的應(yīng)用程序編寫接口,就是ADO。 ADO是一項數(shù)據(jù)庫訪問技術(shù)。ADO具有如下優(yōu)點。 為了使各種流行的編程語言都能編寫符合OLEDB標(biāo)準(zhǔn)的應(yīng) 對于程序設(shè)計者而言,ADO很容易掌握和使用。 ADO能夠被VisualBasic、Java、C++、VBScript及Jscript等程序設(shè)計語言所支持。 ADO能夠訪問各種支持OLEDB的數(shù)據(jù)源,也就是說,通過ADO能夠訪問具有OLEDB驅(qū)動程序的數(shù)據(jù)源。 ADO允許C++的程序員訪問OLEDB的底層接口。 對于程序設(shè)計者而言,ADO很容易掌握和使用。 ADO包括7個對象及集合,其主要作用描述如下。(1)Connection對象 Connection對象用于建立數(shù)據(jù)源與ADO應(yīng)用程序之間的連接。 ADO包括7個對象及集合,其主要作用描述如下。(2)Recordset對象 Recordset對象是ADO中最重要的對象之一,是對數(shù)據(jù)庫進(jìn)行檢索后的數(shù)據(jù)記錄集。這個記錄集既可以是Command對象返回的查詢結(jié)果,也可以是直接運(yùn)行SQL命令產(chǎn)生的查詢結(jié)果。Recordset對象把數(shù)據(jù)庫檢索的結(jié)果封裝在一起,并通過它的方法和屬性提供一種方便、快捷地訪問每條記錄、每個字段的方法。(2)Recordset對象(3)Command對象 Command對象用于定義數(shù)據(jù)庫的查詢動作,一般使用SQL命令,也可以使用存儲過程。 Command對象允許指定參數(shù),其參數(shù)通過Parameter對象賦值、使用。(3)Command對象(4)Parameter對象 Parameter對象的作用是將存儲過程和參數(shù)查詢所需的參數(shù)傳遞給Command對象。存儲過程是SQL語言的過程。一個Command對象上的所有Parameter對象構(gòu)成Parameters集合。(4)Parameter對象(5)Field對象 Field對象能夠使我們讀取記錄集(Recordset)對象中各個字段的字段值。定義在一個Recordset對象上的所有Field對象構(gòu)成Fields集合。(5)Field對象(6)Property對象 Property對象能夠指明一個ADO對象的屬性。所有的Property對象構(gòu)成Properties集合。這個集合與Connection、Command、Recordset或Field對象相關(guān)聯(lián)。(6)Property對象(7)Error對象 Error對象的作用是返回一個數(shù)據(jù)庫連接(Connection)上產(chǎn)生的錯誤。 ADO對象及集合的關(guān)系如圖13-2所示。(7)Error對象第13章使用ADO訪問數(shù)據(jù)庫課件 在ADO的對象中,Connection、Command和Recordset三個對象是頂層對象,也是最重要的對象。我們能夠單獨的創(chuàng)建、釋放這三個對象。而其他對象,盡管可以單獨創(chuàng)建對象,但是在使用之前,必須與有關(guān)的對象相關(guān)聯(lián)。Field、Error和Property對象在其雙親對象存在的情況下才存在,不能單獨的創(chuàng)建這些對象。 在ADO的對象中,Connection、Command Connection對象用于建立應(yīng)用程序與數(shù)據(jù)庫的連接。在這個基礎(chǔ)之上,可以使用Command對象和Recordset對象對所連接的數(shù)據(jù)庫進(jìn)行各種操作。Command對象用于定義數(shù)據(jù)庫的查詢操作,主要采用SQL語言描述查詢動作。Recordset對象對應(yīng)于Command對象的返回結(jié)果。當(dāng)然Recordset對象也可以直接建立一個Recordset,即不顯式地為Recordset創(chuàng)建Connection或Command對象,但實際上通過Recordset對象的一些參數(shù)設(shè)置了Connection對象和Command對象的屬性。 Connection對象用于建立應(yīng)用程序與數(shù)據(jù)庫的連接。13.2建立連接

13.2.1使用Connection對象建立連接 Connection對象用于應(yīng)用程序與服務(wù)器之間的連接。使用Connection對象可以確定以何種方式建立與服務(wù)器的連接,設(shè)置查詢條件,檢查整個處理過程中發(fā)生的錯誤。13.2建立連接13.2.1使用Connec1.建立和關(guān)閉連接對象建立Connection對象的方法如下。<% DimobjCn setobjCn=Server.CreateObject ("ADODB.Connection")%>1.建立和關(guān)閉連接對象 “Server.CreateObject”的含義是執(zhí)行ASP內(nèi)置的Server對象的CreateObject方法,創(chuàng)建一個“ADODB.Connection”對象。新創(chuàng)建的連接對象實例被賦值給對象變量“objCn”,即ObjCn就是與數(shù)據(jù)庫建立連接的對象變量。 關(guān)閉Connection對象的方法是: <% objCn.Close %> “Server.CreateObject”的含義是執(zhí)行A “Close”是Connection對象的方法,其作用是關(guān)閉Connection對象,將應(yīng)用程序與數(shù)據(jù)庫的連接斷開。但objCn仍在內(nèi)存中,沒有釋放所占用的空間。釋放對象變量的方法是: <% setobjCn=nothing %> “Close”是Connection對象的方法,其作用是2.與數(shù)據(jù)源建立連接 建立連接對象,僅僅是創(chuàng)建了一個Connection對象的實例,并沒有真正地與一個數(shù)據(jù)庫建立起連接。建立連接的操作通過Connection對象的Open方法實現(xiàn)。2.與數(shù)據(jù)源建立連接 Connection對象的Open方法的基本語法格式如下<連接對象名>.OpenConnectionString ConnectionString是連接參數(shù),指明了連接的數(shù)據(jù)庫類型、名稱等。 Connection對象的Open方法的基本語法格式如下 需要說明的是,建立連接等操作的成功與否,在瀏覽器上沒有任何顯示。 不同類別的數(shù)據(jù)庫,具有不同的驅(qū)動程序,相應(yīng)的具有不同的連接參數(shù)和格式。 需要說明的是,建立連接等操作的成功與否,在瀏覽器上沒有任13.2.2Connection對象的屬性1.CommandTimeOut屬性

CommandTimeOut屬性用于設(shè)置等待時間。在使用Connection對象的Execute方法運(yùn)行一個查詢時,如果由于網(wǎng)絡(luò)負(fù)擔(dān)過重或其他原因造成在指定的CommandTimeOut時間內(nèi)未能完成有關(guān)操作,則系統(tǒng)會自動取消Execute方法的執(zhí)行。13.2.2Connection對象的屬性 如果將CommandTimeOut的屬性值設(shè)為0,則系統(tǒng)無限期等待命令的執(zhí)行。默認(rèn)值為30秒。2.ConnectionString屬性 ConnectionString屬性指定了與數(shù)據(jù)庫建立連接的參數(shù),包括所連接的數(shù)據(jù)庫類型、名稱等。連接參數(shù)是由若干形如“參數(shù)=值;”的表達(dá)式連接而成。 如果將CommandTimeOut的屬性值設(shè)為0,則系統(tǒng)3.ConnectionTimeOut屬性 ConnectionTimeOut屬性用于設(shè)置執(zhí)行Open方法時的超時時間。當(dāng)超過指定的ConnectionTimeOut時間仍未完成連接操作,系統(tǒng)自動終止Open方法的執(zhí)行。如果設(shè)置ConnectionTimeOut為0,則程序一直等待Open方法的執(zhí)行,直到連接成功。ConnectionTimeOut屬性的默認(rèn)值為15秒。3.ConnectionTimeOut屬性4.DefaultDatabase屬性 DefaultDatabase屬性可以設(shè)置或返回Connection對象的默認(rèn)數(shù)據(jù)庫。4.DefaultDatabase屬性13.2.3通過Connection對象執(zhí)行查詢命令 ADO的Connection對象的主要作用是建立數(shù)據(jù)庫的連接。實際上,Connection對象還可以直接執(zhí)行查詢命令。使用Connection對象的Execute方法能夠執(zhí)行指定的SQL查詢命令或由SQL命令構(gòu)成的文本。13.2.3通過Connection對象執(zhí)行查詢命令 Execute方法格式如下:<連接對象>.ExecuteCommandText[,RecordsetAffectd][,Options] 其中的“CommandText”是包含表名的SQL語句?!癛ecordsetAffectd”是可選參數(shù),若需要知道執(zhí)行該命令所影響的記錄數(shù),可以在此放置一個變量,待命令執(zhí)行完畢,檢查該變量的值即可。“Options”是可選參數(shù),用于指定CommandText的類型,如存儲過程、命令等。 Execute方法格式如下:13.3Recordset對象 從數(shù)據(jù)庫中讀取的數(shù)據(jù)記錄通過Recordset對象處理。使用Recordset對象,可以對數(shù)據(jù)庫中數(shù)據(jù)表的數(shù)據(jù)進(jìn)行各種操作,如插入記錄、刪除記錄、更新記錄、檢索數(shù)據(jù)等。Recordset對象保存數(shù)據(jù)的方式類似于二維表,包括字段和記錄。13.3Recordset對象 從數(shù)據(jù)庫中讀取的數(shù)據(jù)記13.3.1建立Recordset對象 使用Recordset對象時,需要聲明一個Recordset對象的實例,即創(chuàng)建一個Recordset對象的對象變量。其語法格式如下:Set對象變量=Server.CreateObject(“ADODB.Recordset”)13.3.1建立Recordset對象 以上命令的含義是建立一個ADODB.Recordset類型的對象,并賦值給對象變量。對象變量建立后,可以使用Open方法建立一個Recordset。Recordset對象的Open方法的基本格式如下。<對象名>.OpenSource,ConnectionString Source是一個SQL命令,也就是查詢要求。ConnectionString是連接參數(shù)。 以上命令的含義是建立一個ADODB.Recordset類 例如,從課程管理數(shù)據(jù)庫中讀取學(xué)生的基本信息,可以使用如下的命令。<% setRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("課程管理.mdb") RS.Open"Select*fromStudent",cnStr%> 例如,從課程管理數(shù)據(jù)庫中讀取學(xué)生的基本信息,可以使用如下 需要說明的是可以使用多種方式建立Recordset對象。一種方式就是上面提到的直接使用Recordset對象的Open方法建立Recordset。另一種方法是首先建立一個Connection對象,然后使Connection對象與Recordset對象建立關(guān)聯(lián),從而得到建立了連接的Recordset對象。還有一種方法是通過Connection對象的Execute方法執(zhí)行有關(guān)查詢,產(chǎn)生Recordset對象,還可以通過Command對象建立Recordset對象。 需要說明的是可以使用多種方式建立Recordset對象。13.3.2使用Recordset訪問數(shù)據(jù)庫

從Recordset對象中讀取數(shù)據(jù)記錄時需要使用“記錄指針”。從數(shù)據(jù)庫中讀取數(shù)據(jù)、建立Recordset后,有一個“記錄指針”指向第一條記錄。此時,可以讀取這條記錄中各個字段的數(shù)據(jù),而且只能讀取這條記錄的數(shù)據(jù)。就是說,在同一個時刻只能讀取當(dāng)前記錄中的數(shù)據(jù),即記錄指針?biāo)赶虻挠涗洝H绻x取其他記錄的數(shù)據(jù)時,必須把“記錄指針”移動到要訪問的記錄上。13.3.2使用Recordset訪問數(shù)據(jù)庫1.讀取數(shù)據(jù)例13.3讀取Recordset中的字段。<%@Language=VBScript%><HTML><HEAD>使用Recordset讀取數(shù)據(jù)<P>1.讀取數(shù)據(jù)</HEAD><BODY><% SetRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("課程管理.mdb") RS.Open"Select*fromstudent",cnStr </HEAD>ifNotRS.EOFthen tmpNumber=RS("SNumber") tmpName=RS("SName") tmpSex=RS("SSex") tmpBirthDay=RS("SBirthday") tmpAddr=RS("SAddress") tmpZip=RS("SZip") tmpSign=RS("SSign") endif

ifNotRS.EOFthenResponse.WritetmpNumber+tmpName%></BODY></HTML>Response.WritetmpNumber+tmpNa2.輸入數(shù)據(jù) 除了前面提到的使用Connection對象的Execute方法執(zhí)行SQL命令插入記錄之外,還可以使用Recordset對象插入記錄。具體做法是首先在Recordset中添加一個空白記錄,然后,為各個字段賦值。2.輸入數(shù)據(jù)例13.4以下是在記錄集中添加一條新記錄的示例。<%RS.AddNewRS("SNumber")="98082210"RS("SName")="張紅"RS("SSex")="女"RS("出生日期")=Cdate("1980-2-10")RS("地址")="白頤路20號"RS("郵政編碼")="100080"RS("入學(xué)成績")=480RS.Update%>例13.4以下是在記錄集中添加一條新記錄的示例。3.刪除記錄 Recordset提供了刪除對象的方法。 Recordset對象的Delete方法的作用是刪除當(dāng)前記錄指針?biāo)赶虻挠涗洠? <% Rs.Delete %>3.刪除記錄13.3.3Recordset對象的主要屬性 1.AbsolutePage屬性 AbsolutePage屬性可以返回當(dāng)前記錄所在頁的絕對頁號,也可以指定當(dāng)前記錄應(yīng)該放置在哪頁。13.3.3Recordset對象的主要屬性 2.AbsolutePosition屬性 當(dāng)前記錄指針的絕對位置。在正常情況下,其值在1-RecordCount(Recordset對象中記錄的個數(shù))之間,或是常數(shù)值。在Recordset內(nèi),第一條記錄對應(yīng)的AbsolutePosition值為1;最后一條記錄的AbsolutePosition值為RecordCount。2.AbsolutePosition屬性3.ActiveConnection屬性

ActiveConnection屬性是包含連接信息的連接字符串,包括數(shù)據(jù)源、用戶名、口令等。如果已經(jīng)建立了連接,通過ActiveConnection屬性,Recordset對象和Command對象能夠與Connection對象建立關(guān)聯(lián)。我們可以通過ActiveConnection屬性使Connection對象和Recordset對象建立關(guān)聯(lián)。我們還可以通過ActiveConnection屬性讀取與當(dāng)前數(shù)據(jù)庫的連接有關(guān)的參數(shù)。3.ActiveConnection屬性4.BOF屬性 BOF屬性檢查、判明當(dāng)前記錄指針是否在第一條記錄之前,并返回檢查的結(jié)果。如果當(dāng)前記錄指針已經(jīng)移到第一條記錄之前,BOF為真;否則為假。一般情況下,在向前移動記錄指針時,通過檢測BOF的值,可以判斷是否已經(jīng)到達(dá)第一條記錄之前。4.BOF屬性5.CursorLocation屬性 Cursor稱為游標(biāo)。CursorLocation屬性用于選擇所使用的游標(biāo)庫。當(dāng)CursorLocation的值為2,其常數(shù)定義為adUseServer,表示使用服務(wù)器端的游標(biāo)庫。當(dāng)CursorLocation的值為1,其常數(shù)定義為adUseClient,表示使用客戶端的游標(biāo)庫。5.CursorLocation屬性6.CursorType屬性 在使用Recordset讀取數(shù)據(jù)時涉及到使用記錄指針。不同類型的記錄指針具有不同的指針移動方式。在打開Recordset時,需要指定記錄指針的類型,即CursorType屬性。系統(tǒng)提供了四種CursorType值,其含義和屬性值見表13-2。6.CursorType屬性第13章使用ADO訪問數(shù)據(jù)庫課件7.EditMode屬性 EditMode屬性能夠返回Recordset對象當(dāng)前的編輯模式:0表示目前處理的Recordset中沒有任何編輯操作;1表示正在進(jìn)行編輯操作,但是尚未保存到數(shù)據(jù)庫中;2表示正在增加記錄,但是尚未保存到數(shù)據(jù)庫中;4表示當(dāng)前記錄被刪除。7.EditMode屬性8.EOF屬性 EOF屬性用于判斷記錄指針是否到達(dá)Recordset的末尾。當(dāng)EOF的值為True,表示記錄指針位于最后一條記錄之后。9.Filter屬性 Filter屬性可以在Recordset對象中設(shè)置對數(shù)據(jù)的篩選條件,使被過濾出來的Recordset成為當(dāng)前Recordset。8.EOF屬性10.LockType屬性 LockType屬性用于設(shè)置當(dāng)前記錄的鎖定方式,以確定是否可以將記錄寫入數(shù)據(jù)庫。11.MaxRecords屬性 MaxRecords屬性用于設(shè)置從數(shù)據(jù)源一次返回的最大記錄數(shù)。MaxRecords屬性的默認(rèn)值為0,表示返回所有記錄。10.LockType屬性12.PageCount屬性 PageCount屬性指明當(dāng)前Recordset對象所包含的頁數(shù)。每一頁包括一組記錄,其記錄的數(shù)量由PageSize屬性設(shè)置。13.PageSize屬性 當(dāng)Recordset對象設(shè)置了分頁,使用PageSize屬性設(shè)置每頁的記錄數(shù)。PageSize屬性的默認(rèn)值為10,即每一頁有10條記錄。12.PageCount屬性14.RecordCount屬性 使用RecordCount屬性能夠確定Recordset中有多少條記錄。如果ADO無法判斷記錄總數(shù),則返回-1。需要說明的是如果Recordset以adOpenForwardOnly方式打開,則RecordCount屬性不起作用。14.RecordCount屬性15.Source屬性 Source屬性指明Recordset對象的數(shù)據(jù)來源。16.State屬性 State屬性可以返回Recordset對象的狀態(tài)。15.Source屬性17.Status屬性 Status屬性能夠返回記錄處理是否成功的信息。13.3.4Recordset的主要方法1.Open方法 Open方法的完整格式如下。對象變量.OpenSource,Connection,CursorType,LockType,Type17.Status屬性 Open方法中各項參數(shù)的含義如下。 “Source”是一個字符串。指明要從數(shù)據(jù)庫中選取的數(shù)據(jù)。數(shù)據(jù)源可以是Command對象、SQL語句、存儲過程、表名或文件的全路徑。 Open方法中各項參數(shù)的含義如下。 Connection表示數(shù)據(jù)庫連接的名稱??梢允褂萌N方式表達(dá)所要連接的數(shù)據(jù)庫。第一種方式是直接使用已經(jīng)建立連接的Connection對象變量;第二種方式使用連接參數(shù)字符串;第三種方式使用ODBC數(shù)據(jù)源名稱。連接參數(shù)可以通過Recordset對象的ConnectionString屬性設(shè)置。

Connection表示數(shù)據(jù)庫連接的名稱??梢允褂? CursorType指明Recordset對象打開數(shù)據(jù)庫時所使用的記錄指針類型。 LockType是可選參數(shù),它確定了打開Recordset對象時的鎖定類型。

Type是可選參數(shù),用于指定打開Recordset對象時對應(yīng)的Command對象的CommandType類型。 CursorType指明Recordset對象打開2.Close方法 Close方法的作用是關(guān)閉一個Recordset對象,釋放相關(guān)的數(shù)據(jù),即為這個Recordset所申請的資源。使用Close方法不能將Recordset對象從內(nèi)存中清除。 釋放對象變量的命令如下。Set<對象名>=nothing2.Close方法3.Update方法 Update方法的功能是將Recordset對象中當(dāng)前記錄保存到數(shù)據(jù)庫中。4.AddNew方法 AddNew方法的作用是在Recordset對象中添加一條記錄。AddNew方法的語法格式如下。Recoreset.AddNewFieldList,Values3.Update方法 其中FieldList是一個字段或字段數(shù)組的名稱;Values是相應(yīng)的一個字段值或用數(shù)組表示的字段值。FieldList和Values都是可選參數(shù)。如果使用沒有參數(shù)的AddNew方法,則在Recordset中插入一個空白記錄。 其中FieldList是一個字段或字段數(shù)組的名稱;Val 使用AddNew方法向Recordset中添加記錄的方法有兩種:一種方法是在Recordset中添加一個空白記錄,再向這個空白記錄的字段中輸入數(shù)據(jù);另一種方法是先為數(shù)組賦值,再使用AddNew方法將數(shù)組中的數(shù)據(jù)添加到Recordset中。需要特別注意的是使用AddNew方法添加到Recordset中的數(shù)據(jù)并沒有保存到數(shù)據(jù)庫中,必須使用Update方法才能真正將Recordset中的數(shù)據(jù)保存到數(shù)據(jù)庫中。 使用AddNew方法向Recordset中添加記錄的方法5.Delete方法 使用Delete方法能夠刪除Recordset對象中一條或多條記錄。Delete方法的語法格式如下。Records

溫馨提示

  • 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

提交評論