现在的位置: 首页 > 综合 > 正文

统说ado对象游标类型(Connection,RecordSet)以及显示数据记录的三板斧

2013年07月01日 ⁄ 综合 ⁄ 共 2917字 ⁄ 字号 评论关闭

关于ADO中的游标类型- -

对Connection来说:

CursorLocation属性,包含光标服务程序的默认位置.这个值将由使用该Connection对象的Recordset对象自动继承.                                   

常用的游标类型主要有2种:

adUseClient
使用由本地游标库提供的客户端游标。本地游标引擎通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。adUseClientBatch与 adUseClient同义,也支持向后兼容性。

adUseServer
默认值。使用数据提供者或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。

补充说明:

使用adUseClient就是表示数据需要传输到客户端后再进行操作,不具有同步(加入执行查询后,在获取查询结果前,有另一个程序改变了数据库内的内容,客户端的结果是改变之前的数据)。它能更好的支持如RecordCount属性等功能(由于已经把全部数据传输到客户端,程序可以具体知道有多少条数据)。但这样对性能的影响比较大,如果数据很多,由于必须将数据全部执行完后,传送到客户端后在返回,性能影响更明显。

adUseServer是直接在数据库中操作,获取了指向数据的游标后就返回,处理的速度比较快,具体的数据在等到获取数据的时候(如调用MoveNext等方法)的时候再进行运算。在其他的很多方面adUesServer很有限制,如在对结果集进行遍历之前,程序无法知道结果集到底有多少条数据。

 
对RecordSet来说:
CursorType:

程序中常用第二种AdOpenKeyset

AdOpenForwardOnly = 0  '只能用MoveNext读取,并且打开的同时建立的数据库的备份,不能即时体现数据库记录状态,比如记录的编辑和增删.

AdOpenKeyset = 1  '可上下滚动的游标,给打开的记录创建了一个关键字列表,类似记录集的描述,访问的时候才去取得数据值,就是说可以即时看到修改信息,但是不能即时得到数据是否删除的信息,因为这个关键字列表是事先初始化好的.
AdOpenDynamic = 2 '完全可滚动,可得到数据的最新状态,执行效率也会有所降低.

AdOpenStatic = 3 ' 完全可滚动,但是和adOpenKeyset类似,它先将数据库备份文件之后进行操作.可以断开数据库连接后继续使用.

ADO锁的类型有四种,在不需要对数据库数据进行更新的读取操作中,推荐使用AdLockReadOnly只读锁;当添加删除更新一条记录时,推荐使用AdLockPessimistic锁,防止你在更新一条记录时其他人操作相同的记录,或其他人同时录入不合法的重记录。比如用户名注册,在用户查重和提交新名称的过程中有间隔,防止在间隔期其他用户提交你已通过查重的合法名称,或录入两个相同名称。

AdLockReadOnly = 1'只读锁,不能操作记录

AdLockPessimistic= 2'悲观锁,操作者打开之后立即上锁,直到修改完成或者放弃修改为止,此时其他人无法编辑.

AdLockOptimistic= 3'乐观锁,当记录将要被更新的时候才开始上锁,但是不能保证在提交修改之前是否有人改动过.

AdLockBatchOptimistic= 4'批量乐观锁,SQL server中要使用它,必须打开一个可上下滚动的游标,如adOpenKeyset,adOpenStatic.

例(asp):

读取数据库时

set res=server.CreateObject("adodb.recordset")
  res.open sql语句,数据库连接,1,1

更新数据库时

set res=server.CreateObject("adodb.recordset")
  res.open sql语句,数据库连接,1,2


显示数据记录的三板斧

(就是ado控件和dataGrid相结合,他们就是一对男女朋友,很密切的)

 Adodc1.ConnectionString = strcn
    Adodc1.CommandType 
= adCmdUnknown
    Adodc1.RecordSource 
= strsql
    
Set DataGrid1.DataSource = Adodc1
    Adodc1.Refresh
    DataGrid1.Refresh

 

 

//---------------------------------------------------------------------------------------------------------------------------------

ADO中Recordset.Open的参数,游标类型和回锁方式

 

简单说来: CONN,1,1为只读数据;1,3为插入数据;2,3是修改数据 游标的意思形象的说一个表格里有许多行数据,我用鼠标指向某一行数据(在ASP里面叫记录集)你可以拖用鼠标指向下一行。在ASP里面同样也可以。不过要通过它:rs.movenext,记录集往下移。 至于具体和理论知识如下:
游标类型
Const adOpenForwardOnly = 0 前向游标,为缺省游标,提供最快的运行性能。用它打开recordset,从对至尾顺序取得所有结果。它不支持向后滚动,只允许在结果间单向移动。 '以这个参数打开数据集,无法实现Find方法。 
 Const adOpenKeyset = 1 静态游标,反映第一次打开游标时表中数据的状态,游标无法查明底层表中的数据行是否更新过、删除过或添加了新的数据。不过与只能前移的洲标不同,静态游标可以在结果间前后滚动。
Const adOpenDynamic = 2 键盘驱动的游标,可以查询表中底层数据行的某些变化,但不是全部。它特别是可以准确反映数据是否更新过。但它不能查明其它用户是否曾删除过数据行(删除掉的数据行在recordset中会留下空洞)。键盘驱动的游标支持在结果间前后滚动。
Const adOpenStatic = 3 动态游标,是最丰富的游标类型。游标打开时可以查询其他用户对表的任何改动,而且支持滚动。
加锁类型
Const adLockReadOnly = 1 缺省的上锁类型,只读方式上锁允许多个用户同时读取同样的数据,但不能改变数据。 Const adLockPessimistic = 2 以悲观上锁方式打开数据对象。该方式假定在你编辑记录时会有其它用户访问数据。此时一旦你开始编辑记录,其它用户就不能访问该数据。
Const adLockOptimistic = 3 以乐观上锁方式打开数据对象。该方式假定在你编辑记录时不会有其它用户访问数据。在完成改变之前,其它用户不能访问该记录。 Const adLockBatchOptimistic = 4 执行多行批处理更新时使用这种类型

 

抱歉!评论已关闭.