文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发ASP教程 → ADO 光 标 基 础 1  

ADO 光 标 基 础 1  

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

1. 什幺是光标?



光标,也有人称为游标。概括的讲,它是基于记录的。



过去,关系型数据库没有象现在这样被广泛的应用。那时候,人们大多使用 dBase 这样的小型数据库软件。这类数据库确切的说应为数据文件管理软件。他们是面向记录的。



不过,这种方式也许更符合人们的习惯。比如,我们在电话本中查找号码,在学生档案中查找档案,最终都要归结于其中的一个号码,一个档案,那就是一条记录。现实生活中,我们在一张表格中寻找某一项时,可能会用手一条一条逐行的扫过,以帮助我们找到所需的那条记录。对应于数据库来说,这就是光标的模型。所以,你可以这样想象:表格是数据库中的表,而我们的手好比是光标。



所以,当你使用类似 .MoveNext,.MoveLast 这样的语句时,觉得再自然不过了。



现在,你明白什幺是光标了吧。光标就是数据的 ' 定位系统 ' 。



这个 ' 定位系统 ' 粗分有两种:服务器光标和客户光标。对应于 ADO 中的 CursorLocation 。举例来说:



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

rs.CursorLocation = adUseServer      '缺省,使用服务器光标

.....

rs.CursorLocation = adUseClient      '使用客户光标



2. 什幺是服务器光标?



或者称为 API 服务器光标。



假设你要查询有关编程语言的书,写成 SQL 语句就是:SELECT book_id,book_title FROM books WHERE book_catalog = '编程' ORDER BY book_title,同时你指定使用服务器光标。



这条语句发送到服务器服务器对数据进行检索,将符合查询条件的记录集合放入临时表(对某些光标类型是这样)中。每当你进行 .MoveNext 操作,服务器就会发送一条记录到客户端的缓冲区,然后你才可以使用它。



3. 什幺是 CacheSize ?



继续上面的例子,假设符合查询条件的记录有100个,也就是说,用 .MoveNext 这种方法遍历该结果集需要同服务器交互100次。我们可以通过设置 CacheSize 使客户与服务器的通信变少。上面的例子其实就是 CacheSize=1 的情况,这是缺省值。



假设 CacheSize=4,当 RecordSet 对象打开时,服务器发送4条记录到客户端。前4次的 .MoveNext 操作实际上是在客户缓冲区中得到数据,当第5次 .Movenext 时,服务器才发送下一个4条记录。由此,减少了客户与服务器间的网络通信。



那幺是不是说 CacheSize 越大越好呢?千万不要想当然。万事都有两面性,CacheSize 也一样。客户端请求数据,服务器发送数据,这个过程有点象交通管理。CacheSize 过高,会阻塞交通,甚至引起数据丢失(比如当 Cachesize 大于客户端缓冲区时)。对于不同的应用,所取的值也不同。



另外要指出的是,使用任何形式的光标都不是最有效的访问数据的方法,Cachesize 有的时候并不是瓶颈,尽量将使用光标的程序转换为面向结果集的程序,性能会提高很多。



3. 什幺是客户光标?



既然光标是数据的 ' 定位系统 ',那幺在客户端也可以完成。



客户光标的产生由来已久,当初是为了弥补服务器的不足(有些数据库引擎就不支持光标)。随着服务器光标的出现,客户光标似乎已经过时了,不过还是那句话:万事都有两面性,在 internet 上,与数据库的连接并不是永久的,使用客户光标能使我们获得同使用服务器光标一样的功能。



当 CursorLoction 属性设成 adUseClient 时,微软的光标服务( Cursor Service )创建 RecordSet 对象,用前向 / 只读的光标方式从服务器将所有查询结果检索出来,并且存储在客户缓冲区中。当应用程序通过 ADO 请求数据时,光标服务就从客户缓冲区中检取数据。这种方式在连接远程服务器时非常有用,它会提高应用程序的性能。如果你访问的数据库是 Jet 数据库( Access ),而且在本地,那么用客户光标非但不提高性能,还会使性能下降。这时候,数据将被缓存两次,数据库一次,光标服务一次。



如果考虑应用的功能,客户光标功能是很完善的,它能支持某些数据库不能完成的操作( 视数据库的情况而定 )。



4. 什幺是 DisConnected RecordSet ?



我们使用了客户光标,就可以断开与数据库的连接,释放 Connection 对象。这样的结果集就是 DisConnected RecordSet。举例说明:



Dim c As New ADODB.Connection

Dim r As New ADODB.Recordset

On Error GoTo handler

   

c.ConnectionString = connectStr

c.CursorLocation = adUseClient

c.Open

Set r.ActiveConnection = c

r.Open SqlText, , adOpenKeyset, adLockBatchOptimistic, -1

Set r.ActiveConnection = Nothing   ' This disconnects the recordset.

c.Close

Set c = Nothing

......

......   

' Recordset is now in disconnected state; do something with it.

r.Close

Set r = Nothing

......








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

文章评论
发表评论

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

最新文章 《龙珠:超宇宙》 战斗E3 2014:瘆人僵尸《消 asp代码实现access数据导出到excel文件如何使用FSO读取Js文件内容并可以编辑修改对初学者有用的一些asp函数集学习ASP编程必会的代码

人气排行 asp代码实现access数据导出到excel文件asp不需要任何配置的伪静态实现如何使用FSO读取Js文件内容并可以编辑修改asp去除html标记和空格的代码Asp全选删除代码教大家网页伪静态知识及其2种实现方法Microsoft SQL Server 7.0安装问题(一)ASP.NET中的Code Behind技术4