資料|資料庫|遊標 一般而言,下面是個典型的開啟資料庫的過程。
< %
'遊標類型
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
'加鎖類型
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
%>
< % Set Conn = Server.CreateObject('ADODB.Connection') %>
< % Set RSMov = Server.CreateObject('ADODB.RecordSet') %>
< % Conn.Open 'Soc', '', '' %>
< % RSMov.Open sqlMov, Conn, adOpenKeyset, adLockReadOnly %>
遊標使用時是比較靈活的,它有時用來描述一個記錄集,有時又是用來描述目前記錄集中某一條記錄的指標。遊標主要是用來建立一個關聯式資料庫中行/列關係的一種SQL可利用的訪問格。與遊標有關係的技術術語還有一個叫Bookmark的。如果你選擇的遊標方式支援Bookmarks。資料庫將提供相關記錄數目的強大功能。在上面寫出的那麼多遊標方式中,adOpenDynamic是沒有太的用處的,雖然它提供即時顯示資料庫中的記錄的所有更新操作的功能,但是因為並不是所有的資料庫都支援該遊標方式,沒有移植性的遊標方式對當前錯綜複雜的資料庫來說真是用處不大。在實際的編程中,我相信大家使用得最頻繁的是adOpenStatic方式,當然這種方式的缺點是不能夠就、即時反應出資料庫中內容改變時的狀況。如果要想看到資料庫被其它使用者改變的狀況,可使用adOpenKeyse方式(但是它只能夠反應出被編輯的改變情況,也就是說不能夠反映出新增和刪除記錄的改變情況。)
其實上面的內容大家一般都可以在微軟的技術參考資料中找到,下面來說說在使用這些遊標
方式和加鎖方式時要注意到的問題。
1。首先要注意到的是這兩種方式在混合使用時的問題,就是說你同時設定遊標方式和加鎖方式。
除非你是在使用Access資料庫,一般而言當你混合使用時是並不能夠得到你預期想要的遊標方式和加鎖方式的。例如,如果你同時將遊標設定為adOpenStatic方式,而將加鎖設定為adLockOptimistic,你將得不到adOpenStatic方式的遊標,你這時使用的遊標方式將是
adOpenKeyset,也就是說你使用ADO的話,它將返回adOpenKeyset的遊標。
2。其次,遊標和加鎖的混合使用還會導致ADO返回的不是你想要的加鎖方式,ADO會改變你的加鎖
方式。例如,在預設狀態下遊標方式是adOpenForwardOnly,在使用這種遊標方式的同時如果
你使用的加鎖方式為-1(就是讓資料來源來判斷加鎖方式)或則adLockReadOnly,那麼這種混合方式基本上不支援RecordSet的任何方法,也就是說RecordSet的任何方法將返回False
(你的recordcount,absoultpage,addnew,delete,update等都會返回-1,-1就是表示不支援該屬性),但是這時如果你使用的是adOpenForwardOnly遊標方式和其它的加鎖方式混合,它反而會支援填加,刪除和更新。