熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用GetString來提高ASP的速度

2013-11-13 10:06:19  來源: .NET編程 

  許多ASP程序員都有過執行數據庫查詢然後將查詢結果用HTML表格的形式顯示出來的經歷吧通常我們是這麼做的:

  <%
Create connection / recordset
Populate data into recordset object
%>
<TABLE>
<% Do While not rsEOF %>
<TR>
<TD ><%=rs(Field)% ></TD>
<TD ><%=rs(Field)% ></TD>

</TR>
<% rsMoveNext
Loop %>
</TABLE>

  如果查詢結果很多服務器解釋你的ASP script將花費大量的時間因為有許多的

  ResponseWrite語句要處理 如果你將輸出的全部結果放在一個很長的字符串裡(從<TABLE >到</TABLE >)那麼服務器只需解釋一遍ResponseWrite語句速度就會快得多 微軟公司裡的一些能干的家伙已經將想法變成了現實 (注意這是一個ADO 以上才有 的特性 如果你還在使用以前版本的話請升級到最新版)

  有了GetString方法我們就可以僅用一個ResponseWrite來顯示所有的輸出了它就象 是能判斷Recordset是否為EOF的DO LOOP循環

  GetString的用法如下(所有的參數都是可選的):

  String = recordsetGetString(StringFormat NumRows ColumnDelimiter RowDelimiter NullExpr)

  要從Recordset的結果裡生成HTML表格我們只需關心GetString的個參數中的個:

  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 = ServerCreateObject(ADODBConnection)
connOpen DSN=Northwind;
Create a recordset
Dim rs
Set rs = ServerCreateObject(ADODBRecordset)
rsOpen SELECT * FROM table conn
Store our one big string
Dim strTable
strTable = rsGetString(</td ><td ></td ></tr ><tr ><td >
)
%>
<HTML>
<BODY>
<TABLE>
<TR ><TD>
<% ResponseWrite(strTable) %>
</TR ></TD>
</TABLE>
</BODY>
</HTML>
<%
Cleanup!
rsClose
Set rs = Nothing
connClose
Set conn = Nothing
%>

  strTable字符串用於存放我們從SELECT * FROM table結果生成的HTML表格的代碼

  HTML表格的每列之間都將有</td ><td >的HTML代碼每行之間的HTML代碼是</td ></td ><tr ><td > GetString方法將輸出正確的HTML代碼並存放在strTable中這樣我們只需一行ResponseWrite便可以輸出數據集中的所有記錄 讓我們來看個簡單的例 子假設我們的查詢結果返回了以下的行和列:

  

  Col Col Col
Row Bob Smith
Row Ed Frank
Row Sue Void

  那麼GetString語句返回的字符串將是:

  

  Bob</td ><td >Smith</td ><td ></td ><td ></td ></tr ><tr ><
td
>Ed

  說實話這個字符串看上去冗長而雜亂但它就是我們想要的HTML代碼 (注意看我們在 手工書寫的HTML代碼中將<TABLE ><TR ><TD >放在ResponseWrite的前面將</TD ></TR ></TABLE >放在它的後面 這是因為我們的格式化字符串中並不含有這些表格 頭尾所需的字符串)


From:http://tw.wingwit.com/Article/program/net/201311/12568.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.