技巧:用GetString來提高ASP的速度_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:ASP實現(xiàn)將長的標(biāo)題用省略號收尾
      數(shù)據(jù)庫中提取長長的文章,總是有礙網(wǎng)頁的排版布局。 所以,想固定地提取一部分字符,然后后面有……替代。 1、原理: 判斷文章的長度是否超過規(guī)定的長度,若超過則只顯示規(guī)定

      許多ASP程序員都有過執(zhí)行數(shù)據(jù)庫查詢,然后將查詢結(jié)果用HTML表格的形式顯示出來的經(jīng)歷吧。通常我們是這么做的:

      以下為引用的內(nèi)容:

      <%
      '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>

      如果查詢結(jié)果很多,服務(wù)器解釋你的ASP script將花費(fèi)大量的時間,因為有許多的Response.Write語句要處理. 如果你將輸出的全部結(jié)果放在一個很長的字符串里(從<TABLE >到</TABLE >),那么服務(wù)器只需解釋一遍Response.Write語句,速度就會快得多 . 微軟公司里的一些能干的家伙已經(jīng)將想法變成了現(xiàn)實. (注意,這是一個ADO 2.0以上才有 的特性. 如果你還在使用以前版本的話,請升級到最新版)

      有了GetString方法,我們就可以僅用一個Response.Write來顯示所有的輸出了,它就象 是能判斷Recordset是否為EOF的DO ... LOOP循環(huán)。

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

      String = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)

      要從Recordset的結(jié)果里生成HTML表格,我們只需關(guān)心GetString的5個參數(shù)中的3個:

      ColumnDelimiter(分隔記錄集的列的HTML代碼),RowDelimiter(分隔記錄集的行的HTML 代碼),和NullExpr(當(dāng)前記錄為空時應(yīng)生成的HTML代碼)。就象你在下面生成HTML表格的例子里所看到的那樣,每列用<TD >...</TD >分隔,每行用<TR >...</TR >分隔。來看看例子的代碼吧。

      以下為引用的內(nèi)容:

      <%@ 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"結(jié)果生成的HTML表格的代碼。

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

      以下為引用的內(nèi)容:
      Col1 Col2 Col3
      Row1 Bob Smith 40
      Row1 Ed Frank 43
      Row1 Sue Void 42

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

      以下為引用的內(nèi)容:
      Bob</td ><td >Smith</td ><td >40</td ><td ></td ></tr ><tr ><
      td
      >Ed ...

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

      分享:ASP中數(shù)據(jù)庫調(diào)用中常見錯誤的現(xiàn)象和解決
      下面是虛機(jī)維護(hù)中,經(jīng)常碰到的一些ASP程序中的數(shù)據(jù)庫調(diào)用的錯誤,現(xiàn)收集整理如下: 不能打開注冊表關(guān)鍵字(8007000e) Microsoft OLE DB Provider for ODBC Drivers 錯誤 '8007000e' [Micr

      來源:模板無憂//所屬分類:ASP教程/更新時間:2008-08-22
      相關(guān)ASP教程