提高ASP的速度的方法:GetString
許多ASP程序員都有過執行數據庫查詢,然后將查詢結果用HTML表格的形式顯示出來的經歷。通常我們是這么做的:
以下是引用片段:
<%
''Create connection / recordset
''Populate data into recordset object
%>
<% Do While not rs.EOF %> <%=rs("Field1")% > <%=rs("Field2")% >
.
<% rs.MoveNext
Loop %>
如果查詢結果很多,服務器解釋你的ASP script將花費大量的時間,因為有許多的Response.Write語句要處理. 如果你將輸出的全部結果放在一個很長的字符串里(從 到 ),那么服務器只需解釋一遍Response.Write語句,速度就會快得多 . 微軟公司里的一些能干的家伙已經將想法變成了現實. (注意,這是一個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表格的例子里所看到的那樣,每列用 ...分隔,每行用 ...分隔。例子的代碼:
以下是引用片段:
<%@ 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(,,"
," ")
%>
<% Response.Write(strTable) %> |
<%
''Cleanup!
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
strTable字符串用于存放我們從"SELECT * FROM table1"結果生成的HTML表格的代碼。
HTML表格的每列之間都將有 的HTML代碼,每行之間的HTML代碼是 . GetString方法將輸出正確的HTML代碼并存放在strTable中,這樣我們只需一行Response.Write便可以輸出數據集中的所有記錄. 讓我們來看個簡單的例 子,假設我們的查詢結果返回了以下的行和列:
以下是引用片段:
Col1 Col2 Col3
Row1 Bob Smith 40
Row1 Ed Frank 43
Row1 Sue Void 42
GetString語句返回的字符串將是:
以下是引用片段:
Bob
td
>Ed ...
這個字符串看上去冗長而雜亂,但它就是想要的HTML代碼。(注意看,我們在手工書寫的HTML代碼中,將放在它的后面. 這是因為我們的格式化字符串中并不含有這些表格 頭尾所需的字符串。)
標簽:
免責聲明:本站網站部分圖片及文字轉載于網絡,轉載目的在于傳遞更多信息。如涉及作品內容、版權和其它問題,請聯系本網站,我們將在第一時間刪除。
下一篇:淺談 ASP 程序的編程與優化