| 在什麼情況下應該使用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不能使用。 |