熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

Sql中游標和加鎖的問題分析與解答

2013-11-15 14:41:22  來源: SQL Server 

  
  <%
  游標類型
  Const adOpenForwardOnly =
  Const adOpenKeyset =
  Const adOpenDynamic =
  Const adOpenStatic =
  
  加鎖類型
  Const adLockReadOnly =
  Const adLockPessimistic =
  Const adLockOptimistic =
  Const adLockBatchOptimistic =  
  >%
  <% Set Conn = ServerCreateObject(ADODBConnection) >%
  <% Set RSMov = ServerCreateObject(ADODBRecordSet) >%
  <% ConnOpen 數據源名稱 sa >%
  <% RSMovOpen sqlMov Conn adOpenKeyset adLockReadOnly >%
  
  游標使用時是比較靈活的它有時用來描述一個記錄集有時又是用來描述當前記錄集中某一條記錄的指針游標主要是用來建立一個關系數據庫中行/列關系的一種SQL可利用的訪問格式與游標有關系的技術術語還有一個叫Bookmark的如果你選擇的游標方式支持Bookmarks數據庫將提供有關記錄數目的強大功能
  在上面寫出的那麼多游標方式中adOpenDynamic是沒有太的用處的雖然它提供實時顯示數據庫中的記錄的所有更新操作的功能但是因為並不是所有的數據庫都支持該游標方式沒有移植性的游標方式對當前錯綜復雜的數據庫來說真是用處不大
  在實際的編程中我相信大家使用得最頻繁的是adOpenStatic方式當然這種方式的缺點是不能夠就實時反應出數據庫中內容改變時的狀況如果要想看到數據庫被其它用戶改變的狀況可使用adOpenKeyse方式(但是它只能夠反應出被編輯的改變情況也就是說不能夠反映出新增和刪除記錄的改變情況
  其實上面的內容大家一般都可以在微軟的技術參考資料中找到下面來說說在使用這些游標方式和加鎖方式時要注意到的問題
  首先要注意到的是這兩種方式在混合使用時的問題就是說你同時設置游標方式和加鎖方式除非你是在使用Access數據庫一般而言當你混合使用時是並不能夠得到你預期想要的游標方式和加鎖方式的例如如果你同時將游標設置為adOpenStatic方式而將加鎖設置為adLockOptimistic你將得不到adOpenStatic方式的游標你這時使用的游標方式將是adOpenKeyset也就是說你使用ADO的話它將返回adOpenKeyset的游標
  其次游標和加鎖的混合使用還會導致ADO返回的不是你想要的加鎖方式ADO會改變你的加鎖方式例如在默認狀態下游標方式是adOpenForwardOnly在使用這種游標方式的同時如果你使用的加鎖方式為(就是讓數據源來判斷加鎖方式)或則adLockReadOnly那麼這種混合方式基本上不支持RecordSet的任何方法也就是說RecordSet的任何方法將返回False(你的recordcountabsoultpageaddnewdeleteupdate等都會返回就是表示不支持該屬性)但是這時如果你使用的是adOpenForwardOnly游標方式和其它的加鎖方式混合它反而會支持填加刪除和更新
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22180.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.