ASP应用 用GetString来提高ASP的速度
|
admin
2010年7月3日 14:28
本文热度 5916
|
[p][color=#000000]许多asp程序员都有过执行数据库查询,然后将查询结果用html表格的形式显示出来的经历吧。通常我们是这么做的: [/color][/p]
[color=#000000]<%[br]'create connection / recordset[br]'populate data into recordset object[br]%>[br]
[br]<% do while not rs.eof %>[br][br]<%=rs("field1")% > | [br]<%=rs("field2")% > | [br].[br]
[br]<% rs.movenext[br]loop %>[br]
[/color]
[p][color=#000000]如果查询结果很多,服务器解释你的asp script将花费大量的时间,因为有许多的[/color][/p]
[p][color=#000000]response.write语句要处理. 如果你将输出的全部结果放在一个很长的字符串里(从
),那么服务器只需解释一遍response.write语句,速度就会快得多 . 微软公司里的一些能干的家伙已经将想法变成了现实. (注意,这是一个ado 2.0以上才有 的特性. 如果你还在使用以前版本的话,请升级到最新版)[/color][/p]
[p][color=#000000]有了getstring方法,我们就可以仅用一个response.write来显示所有的输出了,它就象 是能判断recordset是否为eof的do ... loop循环. [/color][/p]
[p][color=#000000]getstring的用法如下(所有的参数都是可选的): [/color][/p]
[color=#000000]string = recordset.getstring(stringformat, numrows, columndelimiter, rowdelimiter, nullexpr) [/color]
[p][color=#000000]要从recordset的结果里生成html表格,我们只需关心getstring的5个参数中的3个: [/color][/p]
[p][color=#000000]columndelimiter(分隔记录集的列的html代码),rowdelimiter(分隔记录集的行的html 代码),和nullexpr(当前记录为空时应生成的html代码). 就象你在下面生成html表格的 例子里所看到的那样,每列用
... | 分隔,每行用
...
分隔. 来 看看例子的代码吧. [/color][/p]
[p][color=#000000]<%@ language="vbscript" %>[br]<% option explicit 'good coding technique[br]'establish connection to db[br]dim conn[br]set conn = server.createobject("adodb.connection")[br]conn.open "dsn=northwind;"[br]'create a recordset[br]dim rs[br]set rs = server.createobject("adodb.recordset")[br]rs.open "select * from table1", conn[br]'store our one big string[br]dim strtable[br]strtable = rs.getstring(,,"