找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4524|回复: 1

[ASP] ADO 通过 GetString() 加速脚本的执行速度

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2010-6-22 20:33:11 | 显示全部楼层 |阅读模式
如何使用 GetString() 在 HTML 表格中显示记录集中的数据。
多行 Response.Write
下面的例子演示了在 HTML 表格中显示数据库查询的一种方法:

  1. <html>
  2. <body>

  3. <%
  4. set conn=Server.CreateObject("ADODB.Connection")
  5. conn.Provider="Microsoft.Jet.OLEDB.4.0"
  6. conn.Open "c:/webdata/northwind.mdb"

  7. set rs = Server.CreateObject("ADODB.recordset")
  8. rs.Open "SELECT Companyname, Contactname FROM Customers", conn
  9. %>

  10. <table border="1" width="100%">
  11. <%do until rs.EOF%>
  12.    <tr>
  13.       <td><%Response.Write(rs.fields("Companyname"))%></td>
  14.       <td><%Response.Write(rs.fields("Contactname"))%></td>
  15.    </tr>
  16. <%rs.MoveNext
  17. loop%>
  18. </table>

  19. <%
  20. rs.close
  21. conn.close
  22. set rs = Nothing
  23. set conn = Nothing
  24. %>

  25. </body>
  26. </html>

复制代码

对于一个大型的查询来说,这样做会增加脚本的处理时间,这是由于服务器需要处理大量的 Response.Write 命令。
解决的办法是创建全部字符串,从 <table> 到 </table>,然后将其输出 - 只使用一次 Response.Write。GetString() 方法
GetString() 方法使我们有能力仅使用一次 Response.Write,就可以显示所有的字符串。同时它甚至不需要 do..loop 代码以及条件测试来检查记录集是否处于 EOF。语法str = rs.GetString(format,rows,coldel,rowdel,nullexpr)
如需使用来自记录集的数据创建一个 HTML 表格,我们仅仅需要使用以上参数中的三个(所有的参数都是可选的):
  • coldel - 用作列分隔符的 HTML
  • rowdel - 用作行分隔符的 HTML
  • nullexpr - 当列为空时所使用的 HTML



  1. <html>
  2. <body>

  3. <%
  4. set conn=Server.CreateObject("ADODB.Connection")
  5. conn.Provider="Microsoft.Jet.OLEDB.4.0"
  6. conn.Open "c:/webdata/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>","&nbsp;")
  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>
复制代码


上面的变量 str 包含着由 SELECT 语句返回的所有列和行的一个字符串。在每列之间会出现 </td><td>,在每行之间会出现 </td></tr><tr><td>。这样,仅使用一次 Response.Write,我们就得到了需要的 HTML。
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2010-6-22 20:59:43 | 显示全部楼层
下面的这个是自己写的例子
  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("txl.mdb"))

  7. set rs = Server.CreateObject("ADODB.recordset")
  8. rs.Open "SELECT * FROM data", conn

  9. str=rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
  10. %>

  11. <table width="80%" border="1" align="center">
  12. <tr>
  13. <%'生成表头
  14. for each x in rs.fields%>
  15. <th><%Response.Write(x.name) %></th>
  16. <% next %>
  17. </tr>

  18. <tr>
  19. <td><%Response.Write(str)%></td>
  20. </tr>
  21. </table>

  22. <%
  23. rs.close
  24. conn.close
  25. set rs = Nothing
  26. set conn = Nothing
  27. %>
  28. </body>
  29. </html>
复制代码
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表