用GetString来提高ASP显示HTML表格的速度

  在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 >放在它的后面。这是因为我们的格式化字符串中并不含有这些表格头尾所需的字符串。)


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Asp getstring html
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.