您的位置:首页技术开发ASP技巧 → ADO如何善用RecordSet组件呢?

ADO如何善用RecordSet组件呢?

时间:2004/11/7 4:05:00来源:本站整理作者:蓝点我要评论(0)

為了善用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 = "出版='松崗'"



%>



























<% Do while not rs2.EOF %>



























<% rs2.MoveNext %>



<% Loop %>



書名 出版 圖片 簡介
<%= rs2("書名") %> <%= rs2("出版") %> <%= rs2("圖片") %> <%= rs2("簡介") %>




<% 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 "
無設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 "
有設CacheSize: " & CINT(t2 - t1)



%>



<% rs2.Close %>



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



Clone方法



Clone方法,複製一份RecordSet。



有時候想處理一下RecordSet,譬如使用如上的Filter屬性,於ReecordSet設定搜尋的過濾條件,RecordSet就被變更,此時若又想保留原RecordSet時,就可以使用Clone方法,先複製一份RecordSet,再處理複製的那一份。



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



譬如ASP程式碼rs12.asp如下,使用Set rs1 = rs.Clone將rs 的RecordSet複製一份到rs1的RecordSet當中:



<%



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



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



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



SqlStr = "SELECT * FROM 著作"



rs.Open SqlStr,conn1,1,1



Set rs1 = rs.Clone



%>



































<%



Do While Not rs1.EOF



%>



























<% rs1.MoveNext



Loop



rs1.Close %>



書名 出版 圖片 簡介
<%= rs1("書名")%> <%= rs1("出版")%> <%= rs1("圖片")%> <%= rs1("簡介")%>




以上的 ASP程式碼rs12.asp,於用戶端使用瀏覽器,瀏覽執行的結果,顯示經過複製的那一份rs1的RecordSet。



DSN data source



當我們想得知DSN data source的詳細資訊時,可以直接將連線顯示出來。



讓我們看一個於ASP程式碼當中得知DSN data source詳細資訊的例子。



譬如ASP程式碼rs11.asp如下:



<%



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



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



Response.Write(conn1)



%>



以上的 ASP程式碼rs11.asp,於用戶端使用瀏覽器,瀏覽執行的結果,使用Response.Write(conn1),即可顯示DSN data source的詳細資訊。



OpenSchema



OpenSchema方法,可得知SQL Server某一個資料庫的資料表資訊。



讓我們看一個於ASP程式碼當中使用OpenSchema的例子,請先安裝本書所附「網站熱門應用精選」光碟片,以便自動於SQL Server建立comPak資料庫。



譬如ASP程式碼rs30.asp如下:



<%



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



conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=comPak"



set rs = conn1.OpenSchema(20) 'adSchemaTables



Do while not rs.EOF



Response.Write "
" & rs("TABLE_NAME") & ": " & rs("TABLE_TYPE")



rs.MoveNext



Loop



%>



以上的 ASP程式碼rs30.asp,於用戶端使用瀏覽器,瀏覽執行的結果,由set rs = conn1.OpenSchema(20) 取得SQL Server 的comPak資料庫的資料表資訊,其中rs("TABLE_NAME")取得資料表名稱,rs("TABLE_TYPE")取得資料表類型。


相关阅读 Mac访问Windows共享文件夹Windows 7正版系统验证方法windows 8.1系统版本号查看方法Windows 8.1系统电话激活时无法输入微软返回代码解决方法Windows 8如何调整屏幕分辨率windows8.1磁盘占用100%解决方法Mac双系统如何删除Boot Camp安装的Windows分区Apple教你如何在Mac 上运行 Windows

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案