ADO如何善用RecordSet组件呢?

2016-01-29 18:10 1 1 收藏

ADO如何善用RecordSet组件呢?,ADO如何善用RecordSet组件呢?

【 tulaoshi.com - ASP 】

  為了善用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須小心使用,否則將影響執行

来源:https://www.tulaoshi.com/n/20160129/1504660.html

延伸阅读
标签: 电脑入门
在操作系统发展早期的DOS系统时代,通过在命令提示符中键入命令,可以在计算机上执行任务。而随着操作系统的发展,渐渐出现了Windows图形操作界面,通过鼠标操作替代命令操作。 有网友表示,Windows的伟大,在于解放了你的双手。由于MS-Dos纯碎使用指令完成计算机操作,对于普通用户来说,实在难以使用。不过到后来,能熟练使用指令成为了...
标签: ASP
  我在实验Recordset.Movenext,Recordset.Previous,Recorset.......等移动记录的时候遇到了困难. 我用Access做后台数据库,通过一个查询条件查询得一个记录集,我想用一个表格实现记录的逐条浏览(不是一组记录分页浏览). 即"共查到**条记录,现在是第*条",单击"Next"按钮后下一条记录的内容显示在表格中..... 我用如下...
标签: SQLServer
很多时候我们都需要覆制某 Table 的结构,而使用 SQL Server 的话当然可以找 Enterprise Manager 来解决这问题,但在操作上老是感到比较烦覆。 其实我只需要一句 SQL 语言便能较易地覆制 Table 的结构,例如我们要覆制 Orders 到 OrderHistory 的语法如下: SELECT * INTO OrderHistory FROM Orders WHERE 0 = 1 由於 0 永远都不会等於 1 ...
您可以通过将 ADO.NET 的各项功能与 ActiveX 数据对象 (ADO) 的特定功能进行比较来理解 ADO.NET 的功能。数据的内存中表示形式 在 ADO 中,数据的内存中表示形式为记录集。在 ADO.NET 中,它为数据集。它们之间有重要的差异。表的个数 记录集看起来像单个表。如果记录集将包含来自多个数据库表的数据,则它必须使用 JOIN 查询,将来自各个数据...
如何善用适当的对焦点   选择适当的对焦点,对于摄影新手来说可以是非常重要的基础知识,若果对焦点错了,不但不可以拍出自己想要的相片,更会防碍摄影技术的进步,所以这篇文章便跟各位温习一下「对焦点与景深的关系」,还会分析于对焦点落在不同的位置对相片的影响,各位同学,开课了! 对焦点跟景深的关系 于拍摄相片时,...

经验教程

801

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部