rs.open sql,conn,A,B
A:
ADOPenforwardonly (=0)
只讀,且當(dāng)前數(shù)據(jù)記錄只能向下移動(dòng)。
ADOPenkeyset (=1)
只讀,當(dāng)前數(shù)據(jù)記錄可自由移動(dòng)。
ADOpendynamic (=2)
可讀寫(xiě),當(dāng)前數(shù)據(jù)記錄可自由移動(dòng)。
ADOpenstatic (=3)
可讀寫(xiě),當(dāng)前數(shù)據(jù)記錄可自由移動(dòng),可看到新增記錄。
B:
ADLockreadonly (=1)
缺省鎖定類型,記錄集是只讀的,不能修改記錄。
ADLockpessimistic (=2)
悲觀鎖定,當(dāng)修改記錄時(shí),數(shù)據(jù)提供者將嘗試鎖定記錄以確保成功地編輯記錄,只要編輯一開(kāi) 始,則立即鎖住記錄。
ADLockoptimitic (=3)
樂(lè)觀鎖定,直到用Update方法提交更新的記錄時(shí)才鎖定記錄。
ADLockbatchoptimistic (=4)
批量樂(lè)觀鎖定,允許修改多個(gè)記錄,只有調(diào)用UPDATE BATCH方法時(shí)才鎖定記錄。
當(dāng)不需要改動(dòng)任何記錄時(shí),應(yīng)該使用只讀的記錄集,這樣提供者不用做任何檢測(cè)。對(duì)于一般的使用,樂(lè)觀的鎖定可能是最好的選擇,因?yàn)橛涗浿槐绘i定一小段時(shí)間,數(shù)據(jù)在這段時(shí)間被更新。這就減少了資源的利用。
可使用 Recordset 對(duì)象操作來(lái)自提供者的數(shù)據(jù)。使用 ADO 時(shí),通過(guò) Recordset 對(duì)象可對(duì)幾乎所有數(shù)據(jù)進(jìn)行操作。所有 Recordset 對(duì)象均使用記錄(行)和字段(列)進(jìn)行構(gòu)造。由于提供者所支持的功能不同,某些 Recordset 方法或?qū)傩杂锌赡軣o(wú)效。
在 ADO 中定義了四種不同的游標(biāo)類型:
動(dòng)態(tài)游標(biāo) ? 用于查看其他用戶所作的添加、更改和刪除,并用于不依賴書(shū)簽的 Recordset 中各種類型的移動(dòng)。如果提供者支持,可使用書(shū)簽。
鍵集游標(biāo) ? 其行為類似動(dòng)態(tài)游標(biāo),不同的只是禁止查看其他用戶添加的記錄,并禁止訪問(wèn)其他用戶刪除的記錄,其他用戶所作的數(shù)據(jù)更改將依然可見(jiàn)。它始終支持書(shū)簽,因此允許 Recordset 中各種類型的移動(dòng)。
靜態(tài)游標(biāo) ? 提供記錄集合的靜態(tài)副本以查找數(shù)據(jù)或生成報(bào)告。它始終支持書(shū)簽,因此允許 Recordset 中各種類型的移動(dòng)。其他用戶所作的添加、更改或刪除將不可見(jiàn)。這是打開(kāi)客戶端 (ADOR) Recordset 對(duì)象時(shí)唯一允許使用的游標(biāo)類型。
僅向前游標(biāo) ? 除僅允許在記錄中向前滾動(dòng)之外,其行為類似靜態(tài)游標(biāo)。這樣,當(dāng)需要在 Recordset 中單程移動(dòng)時(shí)就可提高性能。
在打開(kāi) Recordset 之前設(shè)置 CursorType 屬性來(lái)選擇游標(biāo)類型,或使用 Open 方法傳遞 CursorType 參數(shù)。部分提供者不支持所有游標(biāo)類型。請(qǐng)檢查提供者的文檔。如果沒(méi)有指定游標(biāo)類型,ADO 將默認(rèn)打開(kāi)僅向前游標(biāo)。
如果 CursorLocation 屬性被設(shè)置為 adUseClient 后打開(kāi) Recordset,則在返回的 Recordset 對(duì)象中,F(xiàn)ield 對(duì)象的 UnderlyingValue 屬性不可用。對(duì)部分提供者(例如 Microsoft ODBC Provider for OLE DB 連同 Microsoft SQL Server),可以通過(guò)使用 Open 方法傳遞連接字符串,根據(jù)以前定義的 Connection 對(duì)象獨(dú)立地創(chuàng)建 Recordset 對(duì)象。ADO 仍然創(chuàng)建 Connection 對(duì)象,但它不將該對(duì)象賦給對(duì)象變量。不過(guò),如果正在相同的連接上打開(kāi)多個(gè) Recordset 對(duì)象,就應(yīng)該顯式創(chuàng)建和打開(kāi) Connection 對(duì)象,由此將 Connection 對(duì)象賦給對(duì)象變量。如果在打開(kāi) Recordset 對(duì)象時(shí)沒(méi)有使用該對(duì)象變量,即使在傳遞相同連接字符串的情況下,ADO 也將為每個(gè)新的 Recordset 創(chuàng)建新的 Connection 對(duì)象。
可以創(chuàng)建所需數(shù)量的 Recordset 對(duì)象。
打開(kāi) Recordset 時(shí),當(dāng)前記錄位于第一個(gè)記錄(如果有),并且 BOF 和 EOF 屬性被設(shè)置為 False。如果沒(méi)有記錄,BOF 和 EOF 屬性設(shè)置是 True。
假設(shè)提供者支持相關(guān)的功能,可以使用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及 Move 方法,和 AbsolutePosition、AbsolutePage 和 Filter 屬性來(lái)重新確定當(dāng)前記錄的位置。僅向前 Recordset 對(duì)象只支持 MoveNext 方法。當(dāng)使用 Move 方法訪問(wèn)每個(gè)記錄(或枚舉 Recordset)時(shí),可使用 BOF 和 EOF 屬性查看是否移動(dòng)已經(jīng)超過(guò)了 Recordset 的開(kāi)始或結(jié)尾。
Recordset 對(duì)象可支持兩類更新:立即更新和批更新。使用立即更新,一旦調(diào)用 Update 方法,對(duì)數(shù)據(jù)的所有更改將被立即寫(xiě)入基本數(shù)據(jù)源。也可以使用 AddNew 和 Update 方法將值的數(shù)組作為參數(shù)傳遞,同時(shí)更新記錄的若干字段。
如果提供者支持批更新,可以使提供者將多個(gè)記錄的更改存入緩存,然后使用 UpdateBatch 方法在單個(gè)調(diào)用中將它們傳送給數(shù)據(jù)庫(kù)。這種情況應(yīng)用于使用 AddNew、Update 和 Delete 方法所做的更改。調(diào)用 UpdateBatch 方法后,可以使用 Status 屬性檢查任何數(shù)據(jù)沖突并加以解決。
注意 要執(zhí)行不使用 Command 對(duì)象的查詢,應(yīng)將查詢字符串傳遞給 Recordset 對(duì)象的 Open 方法。但是,在想要保持命令文本并重復(fù)執(zhí)行或使用查詢參數(shù)時(shí),仍然需要 Command 對(duì)象。
AddNew 創(chuàng)建可更新的 Recordset 對(duì)象的新記錄。
Append 將對(duì)象追加到集合中。如果集合是 Fields,可以先創(chuàng)建新的 Field 對(duì)象然后再將其追加到集合中。
AppendChunk 將數(shù)據(jù)追加到大型文本、二進(jìn)制數(shù)據(jù) Field 或 Parameter 對(duì)象。
BeginTrans、CommitTrans 和 RollbackTrans 按如下方式管理 Connection 對(duì)象中的事務(wù)進(jìn)程:
BeginTrans ? 開(kāi)始新事務(wù)。
CommitTrans ? 保存任何更改并結(jié)束當(dāng)前事務(wù)。它也可能啟動(dòng)新事務(wù)。
RollbackTrans ? 取消當(dāng)前事務(wù)中所作的任何更改并結(jié)束事務(wù)。它也可能啟動(dòng)新事務(wù)。
Cancel 取消執(zhí)行掛起的、異步 Execute 或 Open 方法調(diào)用。
Cancel (RDS) 取消當(dāng)前運(yùn)行的異步執(zhí)行或獲取。
CancelBatch 取消掛起的批更新。
CancelUpdate 取消在調(diào)用 Update 方法前對(duì)當(dāng)前記錄或新記錄所作的任何更改。
CancelUpdate (RDS) 放棄與指定 Recordset 對(duì)象關(guān)聯(lián)的所有掛起更改,從而恢復(fù)上一次調(diào)用 Refresh 方法之后的值。
Clear 刪除集合中的所有對(duì)象。
Clone 創(chuàng)建與現(xiàn)有 Recordset 對(duì)象相同的復(fù)制 Recordset 對(duì)象。可選擇指定該副本為只讀。
Close 關(guān)閉打開(kāi)的對(duì)象及任何相關(guān)對(duì)象。
CompareBookmarks 比較兩個(gè)書(shū)簽并返回它們相差值的說(shuō)明。
ConvertToString 將 Recordset 轉(zhuǎn)換為代表記錄集數(shù)據(jù)的 MIME 字符串。
CreateObject (RDS) 創(chuàng)建目標(biāo)業(yè)務(wù)對(duì)象的代理并返回指向它的指針。
CreateParameter 使用指定屬性創(chuàng)建新的 Parameter 對(duì)象。
CreateRecordset (RDS) 創(chuàng)建未連接的空 Recordset。
Delete (ADO Parameters Collection) 從 Parameters 集合中刪除對(duì)象。
Delete (ADO Fields Collection) 從 Fields 集合刪除對(duì)象。
Delete (ADO Recordset) 刪除當(dāng)前記錄或記錄組。
Execute (ADO Command) 執(zhí)行在 CommandText 屬性中指定的查詢、SQL 語(yǔ)句或存儲(chǔ)過(guò)程。
Execute (ADO Connection) 執(zhí)行指定的查詢、SQL 語(yǔ)句、存儲(chǔ)過(guò)程或特定提供者的文本等內(nèi)容。
Find 搜索 Recordset 中滿足指定標(biāo)準(zhǔn)的記錄。
GetChunk 返回大型文本或二進(jìn)制數(shù)據(jù) Field 對(duì)象的全部或部分內(nèi)容。
GetRows 將 Recordset 對(duì)象的多個(gè)記錄恢復(fù)到數(shù)組中。
GetString 將 Recordset 按字符串返回。
Item 根據(jù)名稱或序號(hào)返回集合的特定成員。
Move 移動(dòng) Recordset 對(duì)象中當(dāng)前記錄的位置。
MoveFirst、MoveLast、MoveNext 和 MovePrevious 移動(dòng)到指定 Recordset 對(duì)象中的第一個(gè)、最后一個(gè)、下一個(gè)或前一個(gè)記錄并使該記錄成為當(dāng)前記錄。
MoveFirst、MoveLast、MoveNext、MovePrevious (RDS) 移動(dòng)到顯示的 Recordset 中的第一個(gè)、最后一個(gè)、下一個(gè)或前一個(gè)記錄。
NextRecordset 清除當(dāng)前 Recordset 對(duì)象并通過(guò)提前命令序列返回下一個(gè)記錄集。
Open (ADO Connection) 打開(kāi)到數(shù)據(jù)源的連接。
Open (ADO Recordset) 打開(kāi)游標(biāo)。
OpenSchema 從提供者獲取數(shù)據(jù)庫(kù)模式信息。
Query (RDS) 使用有效的 SQL 查詢字符串返回 Recordset。
Refresh 更新集合中的對(duì)象以便反映來(lái)自提供者的可用對(duì)象以及特定于提供者的對(duì)象。
Refresh (RDS) 對(duì)在 Connect 屬性中指定的 ODBC 數(shù)據(jù)源進(jìn)行再查詢并更新查詢結(jié)果。
Requery 通過(guò)重新執(zhí)行對(duì)象所基于的查詢,更新 Recordset 對(duì)象中的數(shù)據(jù)。
Reset (RDS) 根據(jù)指定的排序和篩選屬性對(duì)客戶端 Recordset 執(zhí)行排序或篩選操作。
Resync 從基本數(shù)據(jù)庫(kù)刷新當(dāng)前 Recordset 對(duì)象中的數(shù)據(jù)。
Save (ADO Recordset) 將 Recordset 保存(持久)在文件中。
Seek 搜索 Recordset 的索引以便快速定位與指定值相匹配的行,并將當(dāng)前行的位置更改為該行。
SubmitChanges (RDS) 將本地緩存的可更新 Recordset 的掛起更改提交到在 Connect 屬性中指定的 ODBC 數(shù)據(jù)源中。
Supports 確定指定的 Recordset 對(duì)象是否支持特定類型的功能。
Update 保存對(duì) Recordset 對(duì)象的當(dāng)前記錄所做的所有更改。
UpdateBatch 將所有掛起的批更新寫(xiě)入磁盤(pán)。
給你個(gè)比較有代表性的程序吧,估計(jì)能有所幫助
<%@ LANGUAGE = VBScript%>
<%
'------------------------------------------
'昨天晚上編的簡(jiǎn)單數(shù)據(jù)庫(kù)(ACECESS,有id、password、
'register3個(gè)字段)操作,僅支持單表單條件操作,
'不過(guò)好像沒(méi)什么用:)
'col:待查詢字段名(必添)
'colvalue:待更新、添加字段的值(沒(méi)有用""代替)
'table:表名(必添)
'keyid:查詢條件的字段名(沒(méi)有用""代替,可選)
'keyvalue:查詢條件字段的值(沒(méi)有用""代替,可選)
'col和colvalue必須成對(duì)出現(xiàn)
'keyid和keyvalue必須同時(shí)出現(xiàn)
'------------------------------------------
%>
<%
Function DB_execute(col,colvalue,table,keyid,keyvalue,bz)
Dim ConnStr,conn,rs,sql
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("data/game.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
set rs=server.createobject("adodb.recordset")
for i=0 to UBound(col) step 1
if UBound(col)<>i then
sql=sql&col(i)&", "
else
sql=sql&col(i)&" "
end if
next
if keyid <> "" then
sql="select "&sql&"from "&table&" where "&keyid&"='"&keyvalue&"'"
else
sql="select "&sql&"from "&table
end if
select case bz
case "o"
rs.open sql,conn,1,1
dim rsnum
rsnum=rs.RecordCount
if rsnum > 0 then
dim rsArray()
redim rsArray(rsnum,UBound(col))
for i=0 to UBound(col) step 1
rsArray(0,i)=col(i)
next
for i=1 to rsnum step 1
for j=0 to UBound(col) step 1
rsArray(i,j)=rs(col(j))
next
next
DB_execute=rsArray
else
DB_execute="沒(méi)有查到任何數(shù)據(jù)"
end if
rs.close
set rs=nothing
case "u"
rs.open sql,conn,3,3
if rs.RecordCount > 0 then
for i=0 to UBound(col) step 1
rs(col(i))=colvalue(i)
next
rs.update
else
DB_execute="沒(méi)有查到這條數(shù)據(jù)"
end if
rs.close
set rs=nothing
case "i"
rs.open sql,conn,3,3
rs.addnew
for i=0 to UBound(col) step 1
rs(col(i))=colvalue(i)
next
rs.update
DB_execute="添加數(shù)據(jù)成功"
rs.close
set rs=nothing
case "d"
sql="delete from "&table&" where "&keyid&"='"&keyvalue&"'"
conn.Execute sql
DB_execute="刪除數(shù)據(jù)成功"
end select
conn.close
set conn=nothing
end Function
%>
<%
'返回記錄集
'temp=DB_execute(Array("id","password","register"),"","users","","","o")
'response.write temp(1,2)
'添加一條記錄
'temp=DB_execute(Array("id","password","register"),Array("test","test","0"),"users","","","i")
'response.write temp
'更新一條記錄
'temp=DB_execute(Array("id","password","register"),Array("new","new","1"),"users","id","test","u")
'response.write temp
'刪除一條記錄
'temp=DB_execute(Array("id","password","register"),"","users","id","new1","d")
'response.write temp
%>
ASP 游標(biāo)參數(shù)詳解(ASP記錄集)
2019-09-18 10:37asp開(kāi)發(fā)網(wǎng) ASP教程
經(jīng)常使用游標(biāo),但一些具體的說(shuō)明不是很清楚,書(shū)上的東西太乏味
延伸 · 閱讀
- 2022-03-09SQL利用游標(biāo)遍歷日期查詢的過(guò)程詳解
- 2022-02-10MySQL游標(biāo)詳細(xì)介紹
- 2021-12-16用 INNER JOIN語(yǔ)法聯(lián)接多個(gè)表建記錄集
- 2021-12-15SQL中游標(biāo)(cursor)的基本使用實(shí)例
- 2021-11-17聊聊 MySQL 中的游標(biāo)
- 2021-11-08禁用 SQL 游標(biāo),告訴你外面聽(tīng)不到的原因
- ASP教程
asp 標(biāo)記字符串中指定字符變色不區(qū)分大小寫(xiě)
今天遇到這種問(wèn)題,單純的使用replace函數(shù)不行,他會(huì)改變?cè)械淖址拇笮?xiě),在網(wǎng)上找到相關(guān)的代碼,自己備份下...
- ASP教程
asp Access數(shù)據(jù)備份,還原,壓縮類代碼
asp Access數(shù)據(jù)備份,還原,壓縮類實(shí)現(xiàn)代碼,大家可以參考下。...
- ASP教程
ASP.NET 數(shù)據(jù)源
數(shù)據(jù)源 一個(gè) data sourse 控件與數(shù)據(jù)綁定的控件相互作用,并隱藏了復(fù)雜的數(shù)據(jù)的聯(lián)編過(guò)程。這些是提供數(shù)據(jù)給 data bound 控件的工具,并且支持如插入,刪除...
- ASP教程
asp+javascript實(shí)現(xiàn)404頁(yè)的處理轉(zhuǎn)換
asp+javascript實(shí)現(xiàn)404頁(yè)的處理轉(zhuǎn)換...
- ASP教程
ASP常用函數(shù):getpy()
ASP常用函數(shù):getpy()...
- ASP教程
asp 采集實(shí)戰(zhàn)代碼
最近實(shí)在是太流行采集了,本人是不喜歡采集的,但對(duì)采集的原理我卻很有興趣進(jìn)行研究,拿到了網(wǎng)上采集常用函數(shù),對(duì)其進(jìn)行了一番研究,并實(shí)戰(zhàn),結(jié)果...
- ASP教程
JScript中遍歷Request表單參數(shù)集合的方法
這篇文章主要介紹了JScript中遍歷Request表單參數(shù)集合的方法,本文以遍歷Request.QueryString集合為例給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下...
- ASP教程
asp之基于adodb.stream的文件操作類
asp之基于adodb.stream的文件操作類...