第6章ADO對象模型-Recordset解析課件_第1頁
第6章ADO對象模型-Recordset解析課件_第2頁
第6章ADO對象模型-Recordset解析課件_第3頁
第6章ADO對象模型-Recordset解析課件_第4頁
第6章ADO對象模型-Recordset解析課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ADO對象模型

——asp中的使用7ADO對象模型ADO對象模型創(chuàng)建:setcon=Server.CreateObject("ADODB.Connection")屬性:

ConnectionString

ConnectionTimeoutMode方法:

OpenExecuteBeginTrans

CommitTrans

RollbackTransClose

注意:Execute可返回Recordset對象訪問:seterrs=con.errors集合屬性:count元素屬性:sourcedescriptionRecordSet和Command對象,通過它們的屬性ActiveConnection可訪問集合Errors的上層元素connection,然后再用Errors屬性訪問集合。

seterrs=rs.ActiveConnection.Errorsseterrs=cmd.ActiveConnection.Errors顯示集合中的元素內(nèi)容

seterrs=rs.ActiveConnection.ErrorsForeachiteminerrs

response.write"錯誤源是:"&item.source

response.write"錯誤詳情:"&item.description

response.write"<hr>"nextADO對象模型創(chuàng)建:setcmd=Server.CreateObject("ADODB.Command")屬性:ActiveConnection

已打開的連接或連接參數(shù)字符串CommandText

設(shè)置SQL語句CommandType

指定命令類型以優(yōu)化性能CommandTimeout

設(shè)置等待命令執(zhí)行的秒數(shù)*Parameter(s) 定義參數(shù)化查詢或存儲過程參數(shù)*Prepared 執(zhí)行前是否保存命令的編譯版本方法:Execute 執(zhí)行命令并在適當(dāng)?shù)臅r候返回Recordset

對象setrs=con.execute("select

xh,xmfromxswherenl>=20",,AdCmdText)或setcmd=Server.CreateObject("ADODB.Command")setcmd.ActiveConnection=concmd.CommandText="select*fromxs"cmd.CommandType=AdCmdTextsetrs=cmd.Execute

都能生成Recordset對象rs-再進(jìn)入二重循環(huán)處理rs中的所有數(shù)據(jù)

Recordset

對象Recordset對象概述來自基本表或命令執(zhí)行結(jié)果的記錄全集。通過Recordset

對象可對幾乎所有數(shù)據(jù)進(jìn)行操作。以查詢?yōu)橹?,也可以用來更新?shù)據(jù)。所有Recordset

對象均使用記錄(行)和字段(列)進(jìn)行構(gòu)造。任何時候,Recordset

對象所指的當(dāng)前記錄均為集合內(nèi)的單個記錄。理解為Recordset

對象有一個指針指向當(dāng)前記錄,可以移動該指針以遍歷全部記錄。使用步驟使用的一般過程1創(chuàng)建Recordset對象

setrs=Server.CreateObject("ADODB.Recordset")2設(shè)置連接信息

setconn=Server.CreateObject("ADODB.Connection")conn.open"DSN=mydb"

rs.ActiveConnection=con3打開數(shù)據(jù)集

rs.open"SQL語句"4處理并顯示數(shù)據(jù)使用步驟-續(xù)14處理并顯示數(shù)據(jù)

r=0'行計數(shù)

dountilrs.eof'還沒到記錄末重復(fù)

r=r+1c=0'列計數(shù)

foreachiteminrs.fields'當(dāng)前行的列集合

c=c+1 response.write"第"&r&"行第"&c&"列是"&&"值是"&item next

rs.MoveNext'后移一行

loop使用步驟-續(xù)25如需要將Recordset中的內(nèi)容保存到文件中

rs.Save"FileName",PersistFormat

PersistFormat可選項(xiàng),取值為

adPersistADTG(默認(rèn))使用專用的“AdvancedDataTablegram”格式保存。

adPersistXML使用XML格式保存。移動和書簽方法MoveFirst

MoveLast

MoveNext

MovePrevious和MovenumRows[,Start]****Start

可選,字符串或變體型,為書簽。也可為下列BookmarkEnum

值之一:AdBookmarkCurrent

默認(rèn)。從當(dāng)前記錄開始。AdBookmarkFirst

從首記錄開始。AdBookmarkLast

從尾記錄開始。Bookmark屬性設(shè)置或返回標(biāo)識Recordset

對象中當(dāng)前記錄的書簽。書簽只能在支持書簽功能的Recordset

對象中使用。移動和書簽例varBookmark=rs.Bookmarkrs.Move0,varBookmarkrs.Move–1'回退同

rs.MovePreviousrs.Move1'前進(jìn)同rs.MoveNext增加新記錄AddNew[Fields,values]例varF=Array("xh","xm","nl")

varV=Array("B0101001","LiPing",19)

rs.AddNew

varF,varV或

rs.AddNew

rs("xh")=request.form("xh")

rs("xm")=request.form("xm")

rs("nl")=request.form("nl")最后再rs.Update

完成一條記錄的插入批量更新記錄rs.CursorType=adOpenKeysetrs.LockType=adLockBatchOptimisticrs.Open"xs","DSN=mydb",,,adCmdTable

DoUntilrs.EOF

xs("nl")=xs("nl")+1

rstTitles.MoveNext

Loop

rs.UpdateBatch'<==>rs.CancelBatch

rs.Close批量更新方法UpdateBatch

AffectRecordsCancelBatch

AffectRecords

參數(shù)AffectRecords

可選,決定UpdateBatch

CancelBatch方法所影響的記錄數(shù)adAffectCurrent只影響當(dāng)前記錄。adAffectGroup影響滿足當(dāng)前Filter屬性設(shè)置的記錄。必須將Filter屬性設(shè)置為某個有效的預(yù)定義常量才能使用該選項(xiàng)。adAffectAll(默認(rèn)值)。Recordset

對象中所有記錄,包括由于當(dāng)前Filter屬性設(shè)置而隱藏的任何記錄。UpdateBatch

另有adAffectAllChapters寫入所有子集更改。

批量更新注意項(xiàng)記錄集的打開涉及兩種參數(shù)CursorType和LockTypeCursorType取值(依次為0123):AdOpenForwardOnly

默認(rèn)值,同靜態(tài)游標(biāo),可提高性能。AdOpenKeyset

鍵集,不能訪問他人刪除的記錄,也無法查看他人添加的記錄,但可看見他人更改的數(shù)據(jù)。AdOpenDynamic

動態(tài),可以看見他人所作的添加、更改和刪除。允許在記錄集中進(jìn)行所有類型的移動,但不包括提供者不支持的書簽操作。AdOpenStatic

靜態(tài),可以用來查找數(shù)據(jù)或生成報告的記錄集合的靜態(tài)副本。看不見他人所作的添加、更改或刪除操作結(jié)果批量更新注意項(xiàng)-續(xù)1LockType取值(依次為1234):adLockReadOnly

默認(rèn)值,只讀。無法更改數(shù)據(jù)。adLockPessimistic

悲觀式鎖定,確保能成功,通常在編輯時立即鎖定數(shù)據(jù)源的記錄。adLockOptimistic樂觀式鎖定,只在調(diào)用Update方法時鎖定記錄。adLockBatchOptimistic

樂觀式批更新。用于與立即更新模式相反的批更新模式。CursorType

和LockType都有四種取值,共有16種組合可用于批量更新的也很多,但如下的組合不行:批量更新注意項(xiàng)-續(xù)2CursorTypeLockType結(jié)果AdOpenForwardOnly僅前移0adLockOptimistic樂觀式鎖3數(shù)據(jù)錯adLockBatchOptimistic樂觀式批更新鎖4語法錯AdOpenDynamic

動態(tài)2LockType中的AdLockReadOnly取值是只讀,即不能通過Recordset來更新數(shù)據(jù)的刪除delete[AffectRecords]

AffectRecords是可選項(xiàng),取值為

AdAffectCurrent

默認(rèn)。僅刪除當(dāng)前記錄。

AdAffectGroup

刪除滿足當(dāng)前

Filter屬性設(shè)置的記錄。要使用該選項(xiàng),必須先設(shè)置

Filter屬性。

AdAffectAll刪除所有記錄。

AdAffectAllChapters刪除所有子集記錄。如:

rs.delete

adAffectAll

rs.updatebatch同步和刷新Resync從基本數(shù)據(jù)庫刷新當(dāng)前Recordset

對象中的數(shù)據(jù)Requery

方法

通過重新執(zhí)行對象所基于的查詢,更新Recordset對象中的數(shù)據(jù)。重新發(fā)出原始命令并再次檢索數(shù)據(jù),可使用Requery

方法刷新來自數(shù)據(jù)源的Recordset

對象的全部內(nèi)容。調(diào)用該方法等于相繼調(diào)用Close

和Open

方法。如果正在編輯當(dāng)前記錄或者添加新記錄將產(chǎn)生錯誤。在Recordset

對象打開期間,定義游標(biāo)性質(zhì)(CursorType、LockType、MaxRecords

等)的屬性為只讀,因此Requery

方法只能刷新當(dāng)前游標(biāo)。要更改某個游標(biāo)屬性并查看結(jié)果,必須使用

Close方法使屬性再次成為讀/寫。然后可以更改屬性設(shè)置并且調(diào)用Open方法重新打開游標(biāo)。重視OpenOpenSource,ActiveConnection,CursorType,LockType,OptionsSource是SQL語句,表名也行

ActiveConnection是Connectioin對象,連接參數(shù)串也行

Options是Source的類型可取值為

adCmdText

adCmdTable

adCmdTableDirect

adCmdStoredProc

adCmdUnknown

adCmdFile

adAsyncExecute

等這些參數(shù)都可以通過屬性先賦給Recordset對象,再簡單的調(diào)用open打開Filter為Recordset

中的數(shù)據(jù)指定篩選條件。R|W可以設(shè)置的值有:條件字符串由一個或多個用

AND或OR操作符連接的子句組成的字符串。需要時字段名加[],<、>、<=、>=、<>、=或LIKE(*%)書簽數(shù)組—指向Recordset

對象中記錄的唯一書簽值數(shù)組。如下某個值:AdFilterNone

刪除當(dāng)前篩選條件并恢復(fù)查看的所有記錄。AdFilterPendingRecords

允許只查看已更改且尚未發(fā)送到服務(wù)器的記錄。只能應(yīng)用于批更新模式。AdFilterAffectedRecords允許只查看上一次

Delete、Resync、UpdateBatch或CancelBatch

調(diào)用所影響的記錄。AdFilterFetchedRecords允許查看當(dāng)前緩沖區(qū)中的記錄,即上一次從數(shù)據(jù)庫中檢索記錄的調(diào)用結(jié)果。AdFilterConflictingRecords允許查看在上一次批更新中失敗的記錄。分頁顯示屬性PageSize

Recordset中一頁所包含的記錄數(shù),R|W,默認(rèn)值為10。使用PageSize

屬性可確定組成邏輯數(shù)據(jù)頁的記錄數(shù)。建立頁的大小允許使用AbsolutePage

屬性移動到特定頁的第一個記錄。PageCount返回Recordset

對象包含的數(shù)據(jù)頁數(shù)。使用PageCount屬性可確定Recordset

對象中數(shù)據(jù)的頁數(shù)。-1表示Recordset

對象不支持該屬性。AbsolutePageR|W設(shè)置或返回當(dāng)前記錄所在的頁。取值為1到PageCount;或者返回如下常量:AdPosUnknownRecordset

為空,當(dāng)前位置未知,或者提供者不支持AbsolutePage屬性。AdPosBOF

當(dāng)前記錄指針位于BOF(即BOF屬性為True)。AdPosEOF

當(dāng)前記錄指針位于EOF(即EOF屬性為True)。分頁顯示例假定檢索結(jié)果有108條記錄

rs.PageSize=10

pcs=rs.PageCount

'則pcs=ceiling(108/10)=ceiling(10.8)=11

顯示request("page")頁,

ip=cint(request("page")ifip<1thenip=1ifip>pcsthenip=pcs

rs.absolutePage=ip分頁顯示例-續(xù)

pc=0'頁內(nèi)計數(shù)

dowhilenotrs.eofan

溫馨提示

  • 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

提交評論