⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 23-3.cfm.htm

📁 asp 教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>操作记录集的高级方法</TITLE>
</HEAD>
<BODY>

<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">操作记录集的高级方法</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">到现在为止,你只学习了如何用SQL来修改记录集中的记录。但是,你还可以使用许多记录集方法修改记录集中的记录。下面列出了每种方法的简要说明:</P>
<P ALIGN="JUSTIFY"> </P>

<UL>
<P ALIGN="JUSTIFY"><LI>AddNew。向记录集中添加一条新记录。</LI></P>
<P ALIGN="JUSTIFY"><LI>CancelBatch。(当记录集处在批量更新模式时)取消一批更新。</LI></P>
<P ALIGN="JUSTIFY"><LI>CancelUpdate。(调用Update之前)取消对当前记录所做的所有修改。</LI></P>
<P ALIGN="JUSTIFY"><LI>Delete。从记录集中删除一条记录。</LI></P>
<P ALIGN="JUSTIFY"><LI>Update。保存对当前记录所做的修改。</LI></P>
<P ALIGN="JUSTIFY"><LI>UpdateBatch。(当记录集处于批量更新模式时)保存对一个或多个记录的修改。</LI></P></UL>

<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">例如,你可以用AddNew方法向一个打开的记录集中添加一条空记录:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">    &lt;!--#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>--&gt;</P>
<P ALIGN="JUSTIFY">&lt;%</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.AddNew</P>
<P ALIGN="JUSTIFY">RS(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>MyColumn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>A new column</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">RS.Update</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%&gt;</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在这个脚本中,用AddNew方法创建了一条新记录。接着,新记录的MyColumn域被赋值“A new column”。最后,调用Update方法保存新记录。要使用这些方法,记录集必须以只读方式以外的其它锁定方式打开。</P>
<P ALIGN="JUSTIFY">你也可以使用SQL INSERT语句向一个表中添加新记录,以取代AddNew方法。通常,使用SQL比使用上述的方法要好一些,因为SQL更加灵活。本书的其余部分将使用SQL来操作数据库中的数据。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">遍历记录集</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">记录集对象有许多在记录之间移动的方法。这些方法的大部分只有在记录集以某种特定的游标打开时才可以使用。下面列出了记录集对象的一些方法及其功能的说明:</P>
<P ALIGN="JUSTIFY"> </P>

<UL>
<P ALIGN="JUSTIFY"><LI>Move NumRecords。在记录集中向前或向后移动指定数目的记录数。</LI></P>
<P ALIGN="JUSTIFY"><LI>MoveFirst。移动到记录集的第一条记录。</LI></P>
<P ALIGN="JUSTIFY"><LI>MoveNext。移动到记录集的下一条记录。</LI></P>
<P ALIGN="JUSTIFY"><LI>MovePrevious。移动到记录集中的上一条记录。</LI></P>
<P ALIGN="JUSTIFY"><LI>MoveLast。移动到记录集的最后一条记录。</LI></P></UL>

<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">记录集对象还有许多属性,对遍历记录集是有用处的。同样,许多属性需要特定的游标类型:</P>
<P ALIGN="JUSTIFY"> </P>

<UL>
<P ALIGN="JUSTIFY"><LI>AbsolutePosition。用来设置或读取当前记录在记录集中的位置顺序号。</LI></P>
<P ALIGN="JUSTIFY"><LI>BOF。标明当前位置在记录集中的第一条记录之前。</LI></P>
<P ALIGN="JUSTIFY"><LI>EOF。标明当前位置在记录集中的最后一条记录之后。</LI></P>
<P ALIGN="JUSTIFY"><LI>RecordCount。表示一个记录集中的记录总数。</LI></P></UL>

<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">例如,假设你想在一个记录集中反向移动,你可以使用MoveLast和MovePrevious方法,以及BOF属性。下面的ASP网页演示了该如何实现:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">&lt;HTML&gt;</P>
<P ALIGN="JUSTIFY">&lt;HEAD&gt;&lt;TITLE&gt; Backwards Recordset &lt;/TITLE&gt;&lt;/HEAD&gt;</P>
<P ALIGN="JUSTIFY">&lt;BODY&gt;</P>
<P ALIGN="JUSTIFY">&lt;!--#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>--&gt;</P>
<P ALIGN="JUSTIFY">&lt;%</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,adOpenStatic</P>
<P ALIGN="JUSTIFY">RS.MoveLast</P>
<P ALIGN="JUSTIFY">WHILE NOT RS.EOF</P>
<P ALIGN="JUSTIFY">    Response.Write(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&lt;BR&gt;</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&amp;RS(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>MyCOlumn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>))</P>
<P ALIGN="JUSTIFY">WEND</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%&gt;</P>
<P ALIGN="JUSTIFY">&lt;/BODY&gt;</P>
<P ALIGN="JUSTIFY">&lt;/HTML&gt;</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在这个例子中,用静态游标打开记录集。记录集打开后,通过使用MoveLast和MovePrevious方法,该记录集中的所有记录都被显示,直至到达记录集的开头。BOF属性用来检测何时到达记录集的开头。</P>
<P ALIGN="JUSTIFY">你可以用这种方法在一个记录集中反向移动,但是,很难想象你有什么理由需要这样做。使用SQL语言自身对查询结果进行排序是有效的。如果你可以,你应该用ORDER BY子句对记录进行排序。(要了解ORDER BY子句的更多内容,请参阅第10章,“SQL基础”)</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">返回记录数目</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">你可以用记录集对象的RecordCount属性来确定一个记录集中的记录总数。但是,你应该慎重使用这个属性,因为这个属性在许多情况下效率极低。</P>
<P ALIGN="JUSTIFY">对一个用前向游标打开的记录集,你不能使用RecordCount属性。你必须打开一个效率较低的游标才可以使用这个属性,如下例所示:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">&lt;!--#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>--&gt;</P>
<P ALIGN="JUSTIFY">&lt;%</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 Mycolumn  FROM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,MyConn,adOpenStatic</P>
<P ALIGN="JUSTIFY">Response.Write(RS.RecrdCount)</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%&gt;</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">这个脚本输出表Mytable中的记录数目,RecordCount属性用来返回这个数字。为了能使用RecordCount属性,记录集用一个静态游标打开。</P>
<P ALIGN="JUSTIFY">通常,你需要一个记录数目的唯一原因是想确定是否至少有一条记录满足特定的条件。例如,你也许想检查一下,是否一个人输入了合法的口令。在这种情况下,你可以查询一个保存口令的表,用RecordCount属性确定是否有口令存在。如果RecordCount大于0,说明有口令存在,否则说明没有,该口令是 非法的。</P>
<P ALIGN="JUSTIFY">但是,用EOF属性检测一个查询是否返回了结果将会更好。当用前向游标打开了一个记录集时,你可以使用EOF属性。这里有一个例子:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">&lt;!--#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>--&gt;</P>
<P ALIGN="JUSTIFY">&lt;%</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -