ASP應(yīng)用 用GetString來提高ASP的速度
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
[p][color=#000000]許多asp程序員都有過執(zhí)行數(shù)據(jù)庫查詢,然后將查詢結(jié)果用html表格的形式顯示出來的經(jīng)歷吧。通常我們是這么做的: [/color][/p] [color=#000000]<%[br]'create connection / recordset[br]'populate data into recordset object[br]%>[br]
[p][color=#000000]如果查詢結(jié)果很多,服務(wù)器解釋你的asp script將花費大量的時間,因為有許多的[/color][/p] [p][color=#000000]response.write語句要處理. 如果你將輸出的全部結(jié)果放在一個很長的字符串里(從 [p][color=#000000]有了getstring方法,我們就可以僅用一個response.write來顯示所有的輸出了,它就象 是能判斷recordset是否為eof的do ... loop循環(huán). [/color][/p] [p][color=#000000]getstring的用法如下(所有的參數(shù)都是可選的): [/color][/p] [color=#000000]string = recordset.getstring(stringformat, numrows, columndelimiter, rowdelimiter, nullexpr) [/color] [p][color=#000000]要從recordset的結(jié)果里生成html表格,我們只需關(guān)心getstring的5個參數(shù)中的3個: [/color][/p] [p][color=#000000]columndelimiter(分隔記錄集的列的html代碼),rowdelimiter(分隔記錄集的行的html 代碼),和nullexpr(當(dāng)前記錄為空時應(yīng)生成的html代碼). 就象你在下面生成html表格的 例子里所看到的那樣,每列用 ... | 分隔,每行用[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(,," | "," | ||||
"[br]," ")[br]%>[br][br][br]
[p][/p] [p][color=#000000]strtable字符串用于存放我們從"select * from table1"結(jié)果生成的html表格的代碼. [/color][/p] [p][color=#000000]html表格的每列之間都將有 | 的html代碼,每行之間的html代碼是 | |||||
. getstring方法將輸出正確的html代碼并存放在strtable中,這樣我們只需一行response.write便可以輸出數(shù)據(jù)集中的所有記錄. 讓我們來看個簡單的例 子,假設(shè)我們的查詢結(jié)果返回了以下的行和列: [/color][/p] [color=#000000]col1 col2 col3[br]row1 bob smith 40[br]row1 ed frank 43[br]row1 sue void 42[/color] [p][color=#000000]那么getstring語句返回的字符串將是: [/color][/p] [color=#000000]bob | smith | 40 | ||||
放在response.write的前面,將 |