ASP中RecordSet物件經驗教訓

2021-09-05 15:47:11 字數 2670 閱讀 9844

【主題】recordset物件使用的經驗與教訓

1、recordset物件的eof屬性

例如:

dim rs11,sqlcmd2 

set rs11=server.createobject("adodb.recordset")

sqlcmd2="select * from picture where picid =1234"    

rs11.open sqlcmd2,conn,1,3  

'當查詢的記錄確定只有1條時,最好使用recordcount判讀,不要使用eof 。

'eof 不準確,有時為true,有時為false

if (rs11.recordcount=1) then 

getimgstr=rs11("picpath") 

end if 

rs11.close

說明:ado幫助文件中說,如果開啟沒有記錄的recordset物件,bofeof屬性將設定為true,而recordset物件的

recordcount 屬性設定為零。開啟至少包含一條記錄的recordset物件時,第一條記錄為當前記錄,而bofeof屬性為false。但在使用中若果有一條記錄時,eof並不總是false。

2、cursorlocation 屬性 —設定或返回游標服務的位置

常量說明

adusenone沒有使用游標服務。(該常量已過時並且只為了向後相容才出現)。

aduseclient使用由本地游標庫提供的客戶端游標。本地游標服務通常允許使用的許多功能可能是驅動程式提供的游標無法使用的,因此使用該設定對於那些將要啟用的功能是有好處的。aduseclient具有向後相容性,也支援同義的aduseclientbatch

aduseserver預設值。使用資料提供者的或驅動程式提供的游標。這些游標有時非常靈活,對於其他使用者對資料來源所作的更改具有額外的敏感性。但是,microsoft client cursor provider(如已斷開關聯的記錄集)的某些功能無法由伺服器端游標模擬,通過該設定將無法使用這些功能。

說明:預設的游標是基於伺服器的,資料儲存的任務是管理記錄,當使用伺服器游標建立資料集時,資料儲存管理著記錄的移動,更新等等。對於客戶游標,記錄集的內容全部複製給客戶,受本地游標服務管理,這就意味著對於客戶游標,開啟乙個具有大量記錄的資料集要比使用伺服器游標所需的時間長的多。

3、如何開啟記錄集物件

游標型別選項

const adopenforwardonly = 0 

前向游標,為預設游標,提供最快的執行效能。用它開啟recordset,從對至尾順序取得所有結果。它不支援向後滾動,只允許在結果間單向移動。 

const adopenkeyset = 1 

靜態游標,反映第一次開啟游標時表中資料的狀態,游標無法查明底層表中的資料行是否更新過、刪除過或新增了新的資料。不過與只能前移的洲標不同,靜態游標可以在結果間前後滾動。 

const adopendynamic = 2 

鍵盤驅動的游標,可以查詢表中底層資料行的某些變化,但不是全部。它特別是可以準確反映資料是否更新過。但它不能查明其它使用者是否曾刪除過資料行(刪除掉的資料行在recordset中會留下空洞)。鍵盤驅動的游標支援在結果間前後滾動。 

const adopenstatic = 3                       

動態游標,是最豐富的游標型別。游標開啟時可以查詢其他使用者對錶的任何改動,而且支援滾動。 

加鎖型別選項

const adlockreadonly = 1 

預設的上鎖型別,唯讀方式上鎖允許多個使用者同時讀取同樣的資料,但不能改變資料。 

const adlockpessimistic = 2 

以悲觀上鎖方式開啟資料物件。該方式假定在你編輯記錄時會有其它使用者訪問資料。此時一旦你開始編輯記錄,其它使用者就不能訪問該資料。 

const adlockoptimistic = 3 

以樂觀上鎖方式開啟資料物件。該方式假定在你編輯記錄時不會有其它使用者訪問資料。在完成改變之前,其它使用者不能訪問該記錄。 

const adlockbatchoptimistic = 4 

執行多行批處理更新時使用這種型別

最後,開啟乙個記錄集時,你可以指定乙個options引數。options引數標明用來開啟記錄集的命令字串的型別。告訴ado被執行的字串內容的有關資訊有助於高效地執行該命令字串。

你可以使用下面的常量作為options引數:

adcmdtable。被執行的字串包含乙個表的名字。 

adcmdtext。被執行的字串包含乙個命令文字。 

adcmdstoredproc。被執行的字串包含乙個儲存過程名。 

adcmdunknown。不指定字串的內容。(這是預設值。)

在rs.open後面的引數設定。一般建議:

rs.open sql,conn,0,1 順序遍歷,不需要定位跳轉,不需要新增刪除更新操作,速度最快

rs.open sql,conn,1,3 遍歷,可以進行更新操作,但不能進行定位跳轉

rs.open sql,conn,2,3 可以進行所有操作,可以跳轉

Recordset物件方法詳解

recordset物件方法 open方法 recordset.open source,activeconnection,cursortype,locktype,options source recordset物件可以通過source屬性來連線command物件。source引數可以是乙個comman...

ADO之Recordset物件用法

本文摘自 在ado程式中,記錄集 recordset 物件代表乙個表的記錄集合或者是乙個sql命令或儲存過程執行結果。簡單地說 記錄集實際上快取了從資料庫獲得的記錄,應用程式可以從記錄集中獲得每條記錄的字段。recordset物件的常用屬性和方法 recordcount屬性 返回recordset物...

asp中Session物件的清空

在儲存某些多頁面共用的變數的時候 如儲存使用者登陸資訊 我們用得最多的就是session和cookies了,至於session怎麼使用這裡就不說了 主要說說session的清空。contents.remove 變數名 從session.contents集合中刪除指定的變數 contents.remo...