ASP記錄集對象RecordSet的方法

來源:互聯網
上載者:User

前天在客戶那裡發現一個這樣的問題:資料庫(sql server 2000)和程式(asp)都是從另一個機子拷貝過來,但發現系統卻登入不上,提示使用者密碼錯誤。剛開始使用者一直認為是資料庫的或程式配置問題,但尋找了半天也沒有探索資料庫有什麼問題,由於好久沒有寫過asp程式碼了,一時也沒有想到是代碼有問題。因為代碼是從另一個機子上完全複製過來的應該不會有問題的。沒有辦法開啟了代碼調試發現了是在開啟資料記錄記時出現了錯誤------“不支援些屬性和方法”,問題找到了。

原來開啟資料時:
Set conn = Server.Createobject("ADODB.Connection")
conn.open "DSN=mydb;UID=myuser;PWD=mypass"
set rs=server.createobject("adodb.recordset")
sql="select * from user"
rs.open sql,conn,1,1
後改成了:
Set conn = Server.Createobject("ADODB.Connection")
conn.open "DSN=mydb;UID=myuser;PWD=mypass"
set rs=server.createobject("adodb.recordset")
sql="select * from user"
rs.open sql,conn,3,3

可以登入進系統了,當時問題解決後,由於代碼不是本人寫的,也就沒有仔細看(當時也沒有時間),究竟問題怎麼產生的。下邊把關於asp中的RecordSe相關屬性和方法粘貼如下:

記錄集對象RecordSet的方法
 
Rs.movenext 將記錄指標從當前的位置向下移一行
Rs.moveprevious 將記錄指標從當前的位置向上移一行
Rs.movefirst 將記錄指標移到資料表第一行
Rs.movelast 將記錄指標移到資料表最後一行
Rs.absoluteposition=N 將記錄指標移到資料表第N行
Rs.absolutepage=N 將記錄指標移到第N頁的第一行
Rs.pagesize=N 設定每頁為N條記錄
Rs.pagecount 根據 pagesize 的設定返回總頁數
Rs.recordcount 返回記錄總數
Rs.bof 返回記錄指標是否超出資料表首端,true表示是,false為否
Rs.eof 返回記錄指標是否超出資料表末端,true表示是,false為否
Rs.delete 刪除目前記錄,但記錄指標不會向下移動
Rs.addnew 添加記錄到資料表末端
rs.update 更新資料表記錄
--------------------------------------------------------------
Recordset對象方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset對象可以通過Source屬性來串連Command對象。Source參數可以是一個Command對象名稱、一段SQL命令、一個指定的資料表名稱或是一個Stored Procedure。假如省略這個參數,系統則採用Recordset對象的Source屬性。

ActiveConnection
Recordset對象可以通過ActiveConnection屬性來串連Connection對象。這裡的ActiveConnection可以是一個Connection對象或是一串包含資料庫連接資訊(ConnectionString)的字串參數。

CursorType
Recordset對象Open方法的CursorType參數表示將以什麼樣的遊標類型啟動資料,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
--------------------------------------------------------------
常數                                常數值               說明
--------------------------------------------------------------
adOpenForwardOnly        0                     預設值,啟動一個只能向前移動的遊標(Forward Only)。唯讀,且當前資料記錄只能向下移動
adOpenKeyset                1                     啟動一個Keyset類型的遊標。 唯讀,當前資料記錄可自由移動
adOpenDynamic             2                     啟動一個Dynamic類型的遊標。 可讀寫,當前資料記錄可自由移動。

adOpenStatic                 3                      啟動一個Static類型的遊標。 可讀寫,當前資料記錄可自由移動,可看到新增記錄.
--------------------------------------------------------------
以上幾個遊標類型將直接影響到Recordset對象所有的屬性和方法,以下列表說明他們之間的區別。
--------------------------------------------------------------
Recordset屬性 adOpenForwardOnly   adOpenKeyset   adOpenDynamic   adOpenStatic
--------------------------------------------------------------
AbsolutePage           不支援 不支援 可讀寫 可讀寫
AbsolutePosition       不支援 不支援 可讀寫 可讀寫
ActiveConnection     可讀寫 可讀寫 可讀寫 可讀寫
BOF                        唯讀 唯讀 唯讀 唯讀
Bookmark               不支援 不支援 可讀寫 可讀寫
CacheSize               可讀寫 可讀寫 可讀寫 可讀寫
CursorLocation        可讀寫 可讀寫 可讀寫 可讀寫
CursorType             可讀寫 可讀寫 可讀寫 可讀寫
EditMode                 唯讀 唯讀 唯讀  唯讀
EOF                         唯讀 唯讀 唯讀 唯讀
Filter                       可讀寫 可讀寫 可讀寫 可讀寫
LockType               可讀寫 可讀寫 可讀寫 可讀寫
MarshalOptions       可讀寫 可讀寫 可讀寫 可讀寫
MaxRecords            可讀寫 可讀寫 可讀寫 可讀寫
PageCount              不支援 不支援 唯讀 唯讀
PageSize                 可讀寫 可讀寫 可讀寫 可讀寫
RecordCount         不支援 不支援 唯讀 唯讀
Source                    可讀寫 可讀寫 可讀寫 可讀寫
State                      唯讀 唯讀 唯讀 唯讀
Status                     唯讀 唯讀 唯讀 唯讀
AddNew               支援 支援 支援 支援
CancelBatch          支援 支援 支援 支援
CancelUpdate        支援 支援 支援 支援
Clone                    不支援 不支援
Close                    支援 支援 支援 支援
Delete                    支援 支援 支援 支援
GetRows               支援 支援 支援 支援
Move                   不支援 支援 支援 支援
MoveFirst             支援 支援 支援 支援
MoveLast             不支援 支援 支援 支援
MoveNext            支援 支援 支援 支援
MovePrevious        不支援 支援 支援 支援
NextRecordset       支援 支援 支援 支援
Open                    支援 支援 支援 支援
Requery                支援 支援 支援 支援
Resync                   不支援 不支援 支援 支援
Supports               支援 支援 支援 支援
Update                  支援 支援 支援 支援
UpdateBatch        支援 支援 支援 支援
--------------------------------------------------------------
其中NextRecordset方法並不適用於Microsoft Access資料庫。

LockType
Recordset對象Open方法的LockType參數表示要採用的Lock類型,如果忽略這個參數,那麼系統會以Recordset對象的LockType屬性為預設值。LockType參數包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
-------------------------------------------------------------
常數 常數值 說明
--------------------------------------------------------------
adLockReadOnly 1 預設值,Recordset對象以唯讀方式啟動,無法運行AddNew、Update及Delete等方法 。預設鎖定類型,記錄集是唯讀,不能修改記錄
adLockPrssimistic 2 當資料來源正在更新時,系統會暫時鎖住其他使用者的動作,以保持資料一致性。 悲觀鎖定,當修改記錄時,資料提供者將嘗試鎖定記錄以確保成功地編輯記錄。只要編輯一開始,則立即鎖住記錄。
adLockOptimistic 3 當資料來源正在更新時,系統並不會鎖住其他使用者的動作,其他使用者可以對資料進行增、刪、改的操作。樂觀鎖定 ,直到用Update方法提交更新記錄時才鎖定記錄。
adLockBatchOptimistic 4 當資料來源正在更新時,其他使用者必須將CursorLocation屬性改為adUdeClientBatch才能對資料進行增、刪、改的操作。批量樂觀鎖定,允許修改多個記錄,只有調用UpdateBatch方法後才鎖定記錄。 

當不需要改動任何記錄時,應該使用唯讀記錄集,這樣提供者不用做任何檢測。
對於一般的使用,樂觀的鎖定可能是最好的選擇,因為記錄只被鎖定一小段時間,
資料在這段時間被更新。這減少了資源的使用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.