許多ASP程序員都有過執(zhí)行數(shù)據(jù)庫查詢,然后將查詢結果用HTML表格的形式顯示出 來的經(jīng) 歷吧. 通常我們是這么做的:
< % “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語句,速度就會 快得多 . 微軟公司里的一些能干的家伙已經(jīng)將想法變成了現(xiàn)實. (注意,這是一個ADO 2. 0才有 的特性. 如果你還在使用ADO 1.5話,可以在 http://www.microsoft.com/data/download.htm免費下載ADO 2.0)
有了GetString方法,我們就可以僅用一個Response.Write來顯示所有的輸出了,它 就象 是能判斷Recordset是否為EOF的DO ... LOOP循環(huán).
GetString的用法如下(所有的參數(shù)都是可選的):
String = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)
要從Recordset的結果里生成HTML表格,我們只需關心GetString的5個參數(shù)中的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便可以輸出數(shù)據(jù)集中的所有記錄. 讓我們來看個簡 單的例 子,假設我們的查詢結果返回了以下的行和列:
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 >放在它的后面. 這是因為我們的格式化字符串中并不含有這 些表格 頭尾所需的字符串.)
|