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

📄 23-3.cfm.htm

📁 asp 教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<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 Password_Table </P>
<P ALIGN="JUSTIFY">        WHERE Password=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&amp;Request.Form(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Password</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>),Myconn</P>
<P ALIGN="JUSTIFY">IF RS.EOF THEN</P>
<P ALIGN="JUSTIFY">    Response.Write(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>The password you entered is invalid.</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">ELSE</P>
<P ALIGN="JUSTIFY">    Response.Write(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Welcome to our web site!</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">END IF</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">在这个例子中,用EOF属性检测是否一个查询有返回结果。如果EOF属性是true,说明用户输入的口令不在保存口令的表中。</P>
<P ALIGN="JUSTIFY">在某些情况下,你的确需要返回记录数目。例如,你也许想显示在你站点上注册的用户总数。但是同样,你应该避免使用RecordCount属性。取而代之,你可以执行一个SQL COUNT(*)查询,如下例所示:</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 COUNT(*) Mycount FORM Password_Table</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,MyConn</P>
<P ALIGN="JUSTIFY">%&gt;</P>
<P ALIGN="JUSTIFY">There are &lt;% =RS(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>MyCount</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)%&gt; registered users at the web site.</P>
<P ALIGN="JUSTIFY">&lt;%</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">注意这个查询中如何使用字段别名Mycount。通过给集合函数COUNT(*)提供一个名字,你可以在输入查询结果时使用这个名字。</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY">下一章将讨论用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">假设你想显示你站点上销售的一系列商品。但是,你正在经营几百种项目。在这种情况下,你可能不希望把所有的商品显示在同一个ASP页中。这时允许用户进行翻页将是个不错的办法。</P>
<P ALIGN="JUSTIFY">记录集对象有三个属性用于此目的。你可以使用这些属性把一个记录集中的记录分成许多逻辑页。通过把记录集中的记录进行分页,你可以一次只显示记录集中的一部分。下面列出了这些属性:</P>
<P ALIGN="JUSTIFY"> </P>

<UL>
<P ALIGN="JUSTIFY"><LI>AbsolutePage。指定当前的页。</LI></P>
<P ALIGN="JUSTIFY"><LI>PagePount。返回记录集中的逻辑页数。</LI></P>
<P ALIGN="JUSTIFY"><LI>PageSize。指定一个逻辑页中的记录个数,缺省值是10。</LI></P></UL>

<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">要把一个记录集分成多个页,你应使用PageSize属性指定一页中的记录个数。然后你就可以用AbsolutePage属性移动到一个特定的页。最后,PageCount属性可以用来反回总页数。表23.1演示了如何使用这些属性(见图23.2)。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">表23.1  pages.asp</P>
<P ALIGN="JUSTIFY">&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt; Recordset With Pages &lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;!-- #INCLUDE VIRTUAL="ADOVBS.inc" --&gt;&lt;%' Figure out the current pageIF Request.QueryString("MOVE")="NEXT" THEN  Session("CurrentPage")=Session("CurrentPage")+1END IFIF Request.QueryString("MOVE")="PREV" THEN  Session("CurrentPage")=Session("CurrentPage")-1END IFIF Session("CurrentPage")="" THEN  Session("CurrentPage")=1END IF%&gt;&lt;H1&gt;Current Page: &lt;%=Session("CurrentPage")%&gt;&lt;/H1&gt;&lt;HR&gt;&lt;%' Open a Connection and RecordsetSet MyConn=Server.CreateObject("ADODB.Connection")Set RS=Server.CreateObject("ADODB.RecordSet")MyConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"' Retrieve the list of productsRS.Open "SELECT ProductName FROM Products", MyConn,adOpenStatic' Set the number of records in a pageRS.PageSize=5' Set the current pageRS.AbsolutePage=Session("CurrentPage")' Show the records for the current pageWHILE NOT RS.EOF AND NumRows&lt;RS.PageSize%&gt;&lt;BR&gt;Product Name: &lt;%=RS("ProductName")%&gt;&lt;%RS.MoveNextNumRows=NumRows+1WEND%&gt;&lt;HR&gt;&lt;% IF Session("CurrentPage")&gt;1 THEN %&gt;&lt;A HREF="pages.asp?MOVE=PREV"&gt; [PREV] &lt;/A&gt;&lt;% END IF %&gt;&lt;% IF Session("CurrentPage")&lt;RS.PageCount THEN %&gt;&lt;A HREF="pages.asp?MOVE=NEXT"&gt; [NEXT] &lt;/A&gt;&lt;% END IF %&gt;&lt;%RS.CloseMyConn.Close%&gt;&lt;/BODY&gt;&lt;/HTML&gt;</P>
<P ALIGN="JUSTIFY"><IMG SRC="Image116.gif" tppabs="http://210.74.168.175/guide/asp/part23/Image116.gif" WIDTH=535 HEIGHT=276>                <B>图23.2   对记录集进行分页</P>
</B><P ALIGN="JUSTIFY">这个ASP网页一次显示表Products中的五条记录一个session变量Currentpage被用来跟踪记录集的当前页。当用户单击NEXT时,就显示下一页记录,当用户单击PREV时,就显示上一页。</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">要把一个记录集中的记录分配给一个数组,应使用记录集对象的GetRows()方法。这里有一个例子:</P>
<P ALIGN="JUSTIFY"> </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 MyFirstCol,MySecondCol FORM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,MyConn</P>
<P ALIGN="JUSTIFY">MyArray=RS.GetRows()</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">在这个脚本中,记录集RS中包含的所有记录被分配给数组MyArray。这个数组由GetRows()方法自动创建并添入数据。GetRows()方法创建了一个二维数组,第一个下标代表字段数,第二个下标代表记录数。</P>
<P ALIGN="JUSTIFY">下面的脚本可以用来显示数组MyArray中的内容:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">&lt;%</P>
<P ALIGN="JUSTIFY">FOR i=0 TO UBOUND(MyArray,2)</P>
<P ALIGN="JUSTIFY">%&gt;</P>
<P ALIGN="JUSTIFY">&lt;BR&gt; First Column:&lt;%=MyArray(0,i)%&gt;</P>
<P ALIGN="JUSTIFY">&lt;BR&gt; Second column:&lt;%=MyArray(1,i)%&gt;</P>
<P ALIGN="JUSTIFY">&lt;%</P>
<P ALIGN="JUSTIFY">NEXT</P>
<P ALIGN="JUSTIFY">%&gt;</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">VBScript函数UBOUND()用来确定数组的第二维的维数。FOR</FONT><FONT FACE="Playbill,Courier New" SIZE=3>……</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>NEXT循环用来扫描数组的所有元素。这个数组代表一个有两个字段的记录集。当该数组的第一个下标值是0时,代表第一个字段,当第一个下标值是1时,代表第二个字段。</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">假设你想显示在你站点上发布的最后10条信息,但是不能超过10条信息。或者你想显示3个连接,但是不超过3个。如何能够限制取到一个记录集中的记录数?记录集对象有一个属性用于此目的。通过使用MaxRecords属性,你可以限制从一个数据库查询返回到一个记录集中的记录数目。如下例所示:</P>
<P ALIGN="JUSTIFY"> </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.MaxRecords=10</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</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">    RS.MoveNext</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"> </P>
<P ALIGN="JUSTIFY">在这个脚本中,MaxRecords属性被设为10。当记录集RS被打开时,不会有超过10个记录被取到RS中。即使表中有10,000条记录,也只有10条记录被取出。使用MaxRecords属性时,你必须在打开记录集之前设置该属性值。记录集打开之后,该属性将成为只读的。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">总结</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">这一章讨论了记录集对象。你学会了如何在ASP网页中使用记录集对象显示表中的数据。你还学会了如何用不同类型的游标和锁定打开记录集。最后,你学习了记录集对象的一些高级方法。</P></FONT></BODY>
</HTML>

⌨️ 快捷键说明

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