荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: lvyou (夕阳细雨半杯酒), 信区: Homepage
标  题: 用GetString来提高ASP的速度
发信站: 荔园晨风BBS站 (Mon Apr  8 21:24:14 2002), 转信

许多ASP程序员都有过执行数据库查询,然后将查询结果用HTML表格的形式显示出来的经历吧
. 通常我们是这么做的:

<%
'Create connection / recordset
'Populate data into recordset object
%>






<TABLE>
<% Do While not rs.EOF %>
<TR>
<TD><%=rs("Field1")%></TD>
<TD><%=rs("Field2")%></TD>
...
</TR>
<% rs.MoveNext
Loop %>
</TABLE>

如果查询结果很多,服务器解释你的ASP script将花费大量的时间,因为有许多的
Response.Write语句要处理. 如果你将输出的全部结果放在一个很长的字符串里(从
<TABLE>到</TABLE>),那么服务器只需解释一遍Response.Write语句,速度就会快得多. 微软
公司里的一些能干的家伙已经将想法变成了现实. (注意,这是一个ADO 2.0才有的特性. 如
果你还在使用ADO 1.5话,可以在
http://www.microsoft.com/data/download.htm免费下载ADO 2.0)

有了GetString方法,我们就可以仅用一个Response.Write来显示所有的输出了,它就象是能
判断Recordset是否为EOF的DO ... LOOP循环.

GetString的用法如下(所有的参数都是可选的):

String = recordset.GetString(StringFormat, NumRows, ColumnDelimiter,
RowDelimiter, NullExpr)

要从Recordset的结果里生成HTML表格,我们只需关心GetString的5个参数中的3个:
ColumnDelimiter(分隔记录集的列的HTML代码),RowDelimiter(分隔记录集的行的HTML代码
),和NullExpr(当前记录为空时应生成的HTML代码). 就象你在下面生成
HTML表格的例子里所看到的那样,每列用<TD>...</TD>分隔,每行用<TR>...</TR>分隔. 来看
看例子的代码吧.

<%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit 'Good coding technique

'Establish connection to DB
Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=Northwind;"

'Create a recordset
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM table1", conn

'Store our one big string
Dim strTable
strTable = rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ") %
>

<HTML>
<BODY>


<TABLE>
<TR><TD>
<% Response.Write(strTable) %>
</TR></TD>
</TABLE>

</BODY>
</HTML>
<%

'Cleanup!
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>

strTable字符串用于存放我们从"SELECT * FROM table1"结果生成的HTML表格的代码.
HTML表格的每列之间都将有</td><td>的HTML代码,每行之间的HTML代码是
</td></td><tr><td>. GetString方法将输出正确的HTML代码并存放在strTable中,这样我们
只需一行Response.Write便可以输出数据集中的所有记录. 让我们来看个简单的例子,假设
我们的查询结果返回了以下的行和列:

  Col1 Col2 Col3
Row1 Bob Smith 40
Row1 Ed Frank 43
Row1 Sue Void 42

那么GetString语句返回的字符串将是:

Bob</td><td>Smith</td><td>40</td><td></td></tr><tr><td>Ed ...

说实话,这个字符串看上去冗长而杂乱,但它就是我们想要的HTML代码. (注意看,我们在手工
书写的HTML代码中,将<TABLE><TR><TD>放在Response.Write的前面,将
</TD></TR></TABLE>放在它的后面. 这是因为我们的格式化字符串中并不含有这些表格头尾
所需的字符串.)

Charles Carroll的文章:http://www.learnasp.com/learn/dbgetstring.asp讲
述了如何用GetString来生成一个SELECT box. 我想对你们也是很有帮助的.


--
         [Lvyou Studio]木棉601提供扫描服务
-------------------------------------------------------
4寸相片扫描:     1~3张免费(每人每10天只能免费一次);
4~20张 0.7元/张;21~40张 0.6元/张;40张以上 0.5元/张;
优惠服务:21张以上不需剪裁,图象处理等的每张减少0.05元;
      注:其余图片扫描价格另算,例如A4幅面的2元/张。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.55.60]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店