在什麼情況下應該使用adLockOptimistic,什麼情況下應該使用adLockPessimistic….

來源:互聯網
上載者:User
在什麼情況下應該使用adLockOptimistic,什麼情況下應該使用adLockPessimistic....2008-05-09 17:09
在什麼情況下應該使用adLockOptimistic,什麼情況下應該使用adLockPessimistic,什麼情況下用adOpenKeyset,什麼情況下用adOpenDynamic- -

                                      

 

附帶一個小資料:
-----------------------------------
常數 常數值 說明
-----------------------------------
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 當資料來源正在更新時,系統並不會鎖住其他使用者的動作,其他使用者可以對資料進行增、刪、改的操作。
adLockBatchOptimistic 4 當資料來源正在更新時,其他使用者必須將CursorLocation屬性改為adUdeClientBatch才能對資料進行增、刪、改的操作。

=====定義資料庫連接的一些常量
<%
Const adOpenForwardOnly = 0 '遊標只向前瀏覽記錄,不支援分頁、Recordset、BookMark
Const adOpenKeyset = 1 '鍵集遊標,其他使用者對記錄說做的修改將反映到記錄集中,但其他使用者增加或刪除記錄不會反映到記錄集中。支援分頁、Recordset、BookMark
Const adOpenDynamic = 2 '動態資料指標功能最強,但耗資源也最多。使用者對記錄說做的修改,增加或刪除記錄都將反映到記錄集中。支援全功能瀏覽(ACCESS不支援)。
Const adOpenStatic = 3 '靜態資料指標,只是資料的一個快照,使用者對記錄說做的修改,增加或刪除記錄都不會反映到記錄集中。支援向前或向後移動

Const adLockReadOnly = 1 '鎖定類型,預設的,唯讀,不能作任何修改
Const adLockPessimistic = 2 '當編輯時立即鎖定記錄,最安全的方式
Const adLockOptimistic = 3 '只有在調用Update方法時才鎖定記錄集,而在此前的其他動作仍可對目前記錄變更、插入和刪除等
Const adLockBatchOptimistic = 4 '當編輯時記錄不會被鎖定,而更改、插入和刪除是在批處理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002
%>

---------------------------------------------------------------

ADO Recordset的CursorLocation = AdUseClient時,只有AdOpenStatic/AdOpenForwardOnly
的CursorType會有作用,其他的二者和AdOpenStatic有相同的效果,即無論如何設,CursorType都是adOpenStatic。

如果是AdUseServer,在SQL Server中上述的四種CursorType都可以用,但是RecordSet中的Resync方法只有
在adOpenKeyset的CursorType才能用,AdOpenStatic不能使用。  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.