?? 23-2.cfm.htm
字號:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>記錄集游標(biāo)和鎖定類型</TITLE>
</HEAD>
<BODY>
<B><FONT FACE="宋體" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">記錄集游標(biāo)和鎖定類型</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">你可以用四種類型的游標(biāo)打開一個記錄集。游標(biāo)決定了你可以對一個記錄集進(jìn)行什么操作。游標(biāo)還決定了其他用戶可以對一個記錄集進(jìn)行什么樣的改變。下面列出了游標(biāo)的不同類型和限制:</P>
<P ALIGN="JUSTIFY"> </P>
<UL>
<P ALIGN="JUSTIFY"><LI>adOpenFowardOnly。使用前向游標(biāo),你只能在記錄集中向前移動。</LI></P>
<P ALIGN="JUSTIFY"><LI>adOpenKeyset。使用Keyset游標(biāo),你可以在記錄集中向前或向后移動。如果另一個用戶刪除或改變了一條記錄,記錄集中將反映這個變化。但是,如果另一個用戶添加了一條新記錄,新記錄不會出現(xiàn)在記錄集中。</LI></P>
<P ALIGN="JUSTIFY"><LI>adOpenDynamic。使用動態(tài)游標(biāo),你可以在記錄集中向前或向后移動。其他用戶造成的記錄的任何變化都將在記錄集中有所反映。</LI></P>
<P ALIGN="JUSTIFY"><LI>adOpenStatic。使用靜態(tài)游標(biāo),你可以在記錄集中向前或向后移動。但是,靜態(tài)游標(biāo)不會對其他用戶造成的記錄變化有所反映。</LI></P></UL>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 在缺省情況下,當(dāng)你打開一個記錄集時,將用前向游標(biāo)打開它。這意味著你只能用MoveNext方法在記錄集中向前移動。對記錄集的其它操作將不受支持。</P>
<P ALIGN="JUSTIFY">前向游標(biāo)的好處是它比較快。無論何時,如果前向游標(biāo)可以實現(xiàn)你的要求,你就應(yīng)該使用前向游標(biāo)。但是,如果你需要用功能更強的游標(biāo)打開記錄集,你可以使用如下的腳本:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set RS=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.RecordSet</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</P>
<P ALIGN="JUSTIFY">RS.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>SELECT * FROM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>,MyConn,adOpenDynamic</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">要用一種特定的游標(biāo)打開記錄集,你必須顯式地創(chuàng)建這個記錄集。然后用該游標(biāo)類型打開它。要做到這一點,你首先要創(chuàng)建記錄集對象的一個實例。接下來,你要用Open方法,通過一個連接和一種游標(biāo)類型,打開這個記錄集。在這段腳本中,用連接對象MyConn和一個動態(tài)游標(biāo)打開了記錄集RS。</P>
<P ALIGN="JUSTIFY">打開記錄集時,你也可以指定鎖定類型。鎖定類型決定了當(dāng)不止一個用戶同時試圖改變一個記錄時,數(shù)據(jù)庫應(yīng)如何處理。你可以指定下面的四種鎖定類型:</P>
<P ALIGN="JUSTIFY"> </P>
<UL>
<P ALIGN="JUSTIFY"><LI>adLockReadOnly。指定你不能修改記錄集中的記錄。</LI></P>
<P ALIGN="JUSTIFY"><LI>adLockPessimistic。指定在編輯一個記錄時,立即鎖定它。</LI></P>
<P ALIGN="JUSTIFY"><LI>adLockOptimstic。指定只有調(diào)用記錄集的Update方法時,才鎖定記錄。</LI></P>
<P ALIGN="JUSTIFY"><LI>adLockBatchOptimstic。指定記錄只能成批地更新。</LI></P></UL>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在缺省情況下,記錄集使用只讀鎖定。要指定不同的鎖定類型,你可以在打開記錄集時包含這些鎖定常量之一。這里有一個例子:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set RS=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.RecordSet</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</P>
<P ALIGN="JUSTIFY">RS.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>SELECT * FROM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>,MyConn,adOpenDynamic,adLockPessimistic</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">這個腳本與上一個基本相同,只是增加了鎖定類型。當(dāng)打開記錄集RS時,將使用adLockPessimistic鎖定。這意味著這個記錄集中的記錄可以被修改。(下一集中將討論如何修改)</P>
<P ALIGN="JUSTIFY">最后,打開一個記錄集時,你可以指定一個Options參數(shù)。Options參數(shù)標(biāo)明用來打開記錄集的命令字符串的類型。告訴ADO被執(zhí)行的字符串內(nèi)容的有關(guān)信息有助于高效地執(zhí)行該命令字符串。</P>
<P ALIGN="JUSTIFY">你可以使用下面的常量作為Options參數(shù):</P>
<P ALIGN="JUSTIFY"> </P>
<UL>
<P ALIGN="JUSTIFY"><LI>adCMDTable。被執(zhí)行的字符串包含一個表的名字。</LI></P>
<P ALIGN="JUSTIFY"><LI>adCMDText。被執(zhí)行的字符串包含一個命令文本。</LI></P>
<P ALIGN="JUSTIFY"><LI>adCMDStoredProc。被執(zhí)行的字符串包含一個存儲過程名。</LI></P>
<P ALIGN="JUSTIFY"><LI>adCMDUnknown。不指定字符串的內(nèi)容。(這是缺省值。)</LI></P></UL>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在下面的腳本中,Options參數(shù)用來告訴ADO,命令字符串的內(nèi)容是命令文本:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> <!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set RS=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.RecordSet</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</P>
<P ALIGN="JUSTIFY">RS.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>SELECT * FROM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>,MyConn,adOpenDynamic,adCMDText</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P></FONT></BODY>
</HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -