|
<DIV class="f14 wr">许多ASP程序员都有过执行数据库查询,然后将查询结果用HTML表格的形式显示出 <br>来的经 <br>历吧. 通常我们是这么做的: <br><br>< % <br>“Create connection / recordset <br>“Populate data into recordset object <br>% > <br><br>< TABLE > <br>< % Do While not rs.EOF % > <br>< TR > <br>< TD >< %=rs("Field1")% >< /TD > <br>< TD >< %=rs("Field2")% >< /TD > <br>. <br>< /TR > <br>< % rs.MoveNext <br>Loop % > <br>< /TABLE > <br><br>如果查询结果很多,服务器解释你的ASP script将花费大量的时间,因为有许多的 <br><br>Response.Write语句要处理. 如果你将输出的全部结果放在一个很长的字符串里 <br>(从< <br>TABLE >到< /TABLE >),那么服务器只需解释一遍Response.Write语句,速度就会 <br>快得多 <br>. 微软公司里的一些能干的家伙已经将想法变成了现实. (注意,这是一个ADO 2. <br>0才有 <br>的特性. 如果你还在使用ADO 1.5话,可以在 <br><a href="http://www.microsoft.com/data/download.htm" target="_blank" >http://www.microsoft.com/data/download.htm</A>免费下载ADO 2.0) <br><br>有了GetString方法,我们就可以仅用一个Response.Write来显示所有的输出了,它 <br>就象 <br>是能判断Recordset是否为EOF的DO ... LOOP循环. <br><br>GetString的用法如下(所有的参数都是可选的): <br><br>String = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, <br>RowDelimiter, NullExpr) <br><br>要从Recordset的结果里生成HTML表格,我们只需关心GetString的5个参数中的3个 <br>: <br>ColumnDelimiter(分隔记录集的列的HTML代码),RowDelimiter(分隔记录集的行的 <br>HTML <br>代码),和NullExpr(当前记录为空时应生成的HTML代码). 就象你在下面生成HTML <br>表格的 <br>例子里所看到的那样,每列用< TD >...< /TD >分隔,每行用< TR >...< /TR >分 <br>隔. 来 <br>看看例子的代码吧. <br><br>< %@ LANGUAGE="VBSCRIPT" % > <br>< % Option Explicit “Good coding technique <br><br>“Establish connection to DB <br>Dim conn <br>Set conn = Server.CreateObject("ADODB.Connection") <br>conn.Open "DSN=Northwind;" <br><br>“Create a recordset <br>Dim rs <br>Set rs = Server.CreateObject("ADODB.Recordset") <br>rs.Open "SELECT * FROM table1", conn <br><br>“Store our one big string <br>Dim strTable <br>strTable = rs.GetString(,,"< /td >< td >","< /td >< /tr >< tr >< td >" <br>," ") <br>% > <br><br>< HTML > <br>< BODY > <br><br><br>< TABLE > <br>< TR >< TD > <br>< % Response.Write(strTable) % > <br>< /TR >< /TD > <br>< /TABLE > <br><br>< /BODY > <br>< /HTML > <br>< % <br><br>“Cleanup! <br>rs.Close <br>Set rs = Nothing <br>conn.Close <br>Set conn = Nothing <br>% > <br><br>strTable字符串用于存放我们从"SELECT * FROM table1"结果生成的HTML表格的 <br>代码. <br>HTML表格的每列之间都将有< /td >< td >的HTML代码,每行之间的HTML代码是< <br>/td >< <br>/td >< tr >< td >. GetString方法将输出正确的HTML代码并存放在strTable中 <br>,这样 <br>我们只需一行Response.Write便可以输出数据集中的所有记录. 让我们来看个简 <br>单的例 <br>子,假设我们的查询结果返回了以下的行和列: <br><br>Col1 Col2 Col3 <br>Row1 Bob Smith 40 <br>Row1 Ed Frank 43 <br>Row1 Sue Void 42 <br><br>那么GetString语句返回的字符串将是: <br><br>Bob< /td >< td >Smith< /td >< td >40< /td >< td >< /td >< /tr >< tr >< <br>td <br>>Ed ... <br><br>说实话,这个字符串看上去冗长而杂乱,但它就是我们想要的HTML代码. (注意看, <br>我们在 <br>手工书写的HTML代码中,将< TABLE >< TR >< TD >放在Response.Write的前面,将 <br>< /TD <br>>< /TR >< /TABLE >放在它的后面. 这是因为我们的格式化字符串中并不含有这 <br>些表格 <br>头尾所需的字符串.) <br><br></DIV>
[此贴子已经被作者于2006-7-1 6:58:14编辑过]
|
|