当前位置: 首页 > 图文教程 > 网络编程 > ASP > ADO如何善用RecordSet组件呢?

ASP
用asp执行DTC
利用ADODB.Stream使用浏览器下载服务器文件
应用数据库的唯一性约束并在asp中捕捉数据库的错误
用ASP编程控制在IIS建立Web站点
asp实现k线图(在线)
在ASP中用EasyMailObject组件处理Exchange邮件源代码(7)
在ASP中用EasyMailObject组件处理Exchange邮件源代码(6)
在ASP中用EasyMailObject组件处理Exchange邮件源代码(5)
在ASP中用EasyMailObject组件处理Exchange邮件源代码(4)
在ASP中用EasyMailObject组件处理Exchange邮件源代码(3)
在ASP中用EasyMailObject组件处理Exchange邮件源代码(2)
在ASP中用EasyMailObject组件处理Exchange邮件源代码(1)
用文本+ASP打造新闻发布系统。几点补充
用文本+ASP打造新闻发布系统(五)新闻修改
用文本+ASP打造新闻发布系统(四)新闻删除
用文本+ASP打造新闻发布系统(三)新闻列表显示
用文本+ASP打造新闻发布系统(二)新闻添加
ASP作的剪包锤游戏
ASP注册表项目修改
构建稳定的服务器端组件的七个步骤

ASP 中的 ADO如何善用RecordSet组件呢?


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 158 ::
收藏到网摘: n/a

  為了善用RecordSet物件,RecordSet物件還有許多有用的屬性和方法,讓我們再學學:

Filter屬性:於ReecordSet設定搜尋過濾的條件,只顯示合乎條件的資料。
Clone方法:複製一份RecordSet。
CacheSize屬性:設定或得知RecordSet暫存(cache)於記憶體的的記錄筆數。
Filter屬性

經由SELECT等指令將查詢存放到RecordSet的記錄,仍然可以於RecordSet中再設定搜尋過濾的條件,方法為使用Filter屬性。

Filter屬性,於ReecordSet設定搜尋的過濾條件,只顯示合乎條件的資料。

讓我們看一個於ASP程式碼當中使用Filter屬性的例子。

譬如ASP程式碼rs19.asp如下,Filter設定為rs2.Filter = "出版='松崗'",表示只要搜尋 [出版] 欄位為 [松崗] 的記錄:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

Set rs2 = Server.CreateObject("ADODB.Recordset")

SqlStr = "SELECT * From 著作"

rs2.Open SqlStr,conn1,1,1

rs2.Filter = "出版='松崗'"

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">書名</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">圖片</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">簡介</FONT></TD>

<% Do while not rs2.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("書名") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("出版") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("圖片") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("簡介") %></TD>

</TR>

<% rs2.MoveNext %>

<% Loop %>

</TABLE>

<% rs2.Close %>

以上的 ASP程式碼rs19.asp,於用戶端使用瀏覽器,瀏覽執行的結果,顯示過濾後的結果,只顯示合乎條件的資料。

CacheSize屬性

CacheSize屬性,設定或得知RecordSet暫存(cache)於記憶體的的記錄筆數,預設值為1。

譬如您若將CacheSize設定為10時,ADO首先將前10筆的記錄暫存(cache)放到本機記憶體緩衝器(local memory buffer)當中,一旦您移動到最末的第10筆記錄時,ADO暫存(cache)第二個10筆記錄。

若要更新暫存(cache)的記錄,可使用Resync方法。

讓我們看一個於ASP程式碼當中使用CacheSize的例子。

譬如ASP程式碼rs18.asp如下,這個例子將產品資料表的資料由第一筆逐一移動到最末筆,總計循環做了100次,計算總共花了多少時間,比較有和沒有設定CacheSize的執行效能差別:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

Set rs2 = Server.CreateObject("ADODB.Recordset")

SqlStr = "SELECT * From 產品"

rs2.Open SqlStr,conn1,1,1

t1 = Timer

For i = 1 to 100

rs2.MoveFirst

Do while not rs2.EOF

A = rs2(0)

rs2.MoveNext

Loop

Next

t2 = Timer

Response.Write "<BR>無設CacheSize: " & CINT(t2 - t1)

rs2.MoveFirst

rs2.CacheSize = 10

t2 = Timer

For i = 1 to 100

rs2.MoveFirst

Do while not rs2.EOF

A = rs2(0)

rs2.MoveNext

Loop

Next

t2 = Timer

Response.Write "<BR>有設CacheSize: " & CINT(t2 - t1)

%>

<% rs2.Close %>

由本例,未設定CacheSize,花了6秒時間就完成。將CacheSize設定為10時,反而花了9秒時間才完成。可見CacheSize須小心使用,否則將影響執行