ADO 通过 GetString() 加速脚本

请使用 GetString() 方法来加速您的 ASP 脚本(来代替多行的 Response.Write)。

实例

使用 GetString()

如何使用 GetString() 在 HTML 表格中显示记录集中的数据。

  1. <html>
  2. <body>
  3. <%
  4. set conn=Server.CreateObject("ADODB.Connection")
  5. conn.Provider="Microsoft.Jet.OLEDB.4.0"
  6. conn.Open(Server.Mappath("/db/northwind.mdb"))
  7. set rs = Server.CreateObject("ADODB.recordset")
  8. rs.Open "SELECT Companyname, Contactname FROM Customers", conn
  9. str=rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
  10. %>
  11. <table border="1" width="100%">
  12. <tr>
  13. <td><%Response.Write(str)%></td>
  14. </tr>
  15. </table>
  16. <%
  17. rs.close
  18. conn.close
  19. set rs = Nothing
  20. set conn = Nothing
  21. %>
  22. </body>
  23. </html>

多行 Response.Write

下面的例子演示了在 HTML 表格中显示数据库查询的一种方法:

  1. <html>
  2. <body>
  3.  
  4. <%
  5. set conn=Server.CreateObject("ADODB.Connection")
  6. conn.Provider="Microsoft.Jet.OLEDB.4.0"
  7. conn.Open "c:/webdata/northwind.mdb"
  8.  
  9. set rs = Server.CreateObject("ADODB.recordset")
  10. rs.Open "SELECT Companyname, Contactname FROM Customers", conn
  11. %>
  12.  
  13. <table border="1" width="100%">
  14. <%do until rs.EOF%>
  15. <tr>
  16. <td><%Response.Write(rs.fields("Companyname"))%></td>
  17. <td><%Response.Write(rs.fields("Contactname"))%></td>
  18. </tr>
  19. <%rs.MoveNext
  20. loop%>
  21. </table>
  22.  
  23. <%
  24. rs.close
  25. conn.close
  26. set rs = Nothing
  27. set conn = Nothing
  28. %>
  29.  
  30. </body>
  31. </html>

对于一个大型的查询来说,这样做会增加脚本的处理时间,这是由于服务器需要处理大量的 Response.Write 命令。

解决的办法是创建全部字符串,从 <table> 到 </table>,然后将其输出 - 只使用一次 Response.Write。

GetString() 方法

GetString() 方法使我们有能力仅使用一次 Response.Write,就可以显示所有的字符串。同时它甚至不需要 do..loop 代码以及条件测试来检查记录集是否处于 EOF。

语法

  1. str = rs.GetString(format,rows,coldel,rowdel,nullexpr)

如需使用来自记录集的数据创建一个 HTML 表格,我们仅仅需要使用以上参数中的三个(所有的参数都是可选的):

  • coldel - 用作列分隔符的 HTML
  • rowdel - 用作行分隔符的 HTML
  • nullexpr - 当列为空时所使用的 HTML

注释:GetString() 方法是 ADO 2.0 的特性。您可从下面的地址下载 ADO 2.0:http://www.microsoft.com/data/download.htm

在下面的例子中,我们将使用 GetString() 方法,把记录集存为一个字符串:

  1. <html>
  2. <body>
  3.  
  4. <%
  5. set conn=Server.CreateObject("ADODB.Connection")
  6. conn.Provider="Microsoft.Jet.OLEDB.4.0"
  7. conn.Open "c:/webdata/northwind.mdb"
  8.  
  9. set rs = Server.CreateObject("ADODB.recordset")
  10. rs.Open "SELECT Companyname, Contactname FROM Customers", conn
  11.  
  12. str=rs.GetString(,,"</td><td>","</td></tr><tr><td>","&nbsp;")
  13. %>
  14.  
  15. <table border="1" width="100%">
  16. <tr>
  17. <td><%Response.Write(str)%></td>
  18. </tr>
  19. </table>
  20.  
  21. <%
  22. rs.close
  23. conn.close
  24. set rs = Nothing
  25. set conn = Nothing
  26. %>
  27. </body>
  28. </html>

上面的变量 str 包含着由 SELECT 语句返回的所有列和行的一个字符串。在每列之间会出现 </td><td>,在每行之间会出现 </td></tr><tr><td>。这样,仅使用一次 Response.Write,我们就得到了需要的 HTML。