Recordset 对象代表一个表的记录集或者命令执行的结果

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Recordset对象代表一个表的记录集或者命令执行的结果,在记录集中,总是有一个当前的记录。记录集是ADO管理数据的基本对象,所有的Recordset对象都按照行列方式的表状结构进行管理,每一行对应一个记录(Record),每一列对应一个域(Field)。Recordset对象也通过游标对记录进行访问,在ADo中,游标分四不中:a.静态游标。提供对数据集的一个静态拷贝,允许各种移动操作,包括前移、后移等等,但其他用户所做的操作反映不出来。b.动态游标。允许各种移动操作,包括前移、后移等等,并且其他用户所做的操作也可以直接反映出来。c.前向游标。允许各种前向移动操作,不能向后移动,并且其他用户所做的操作也可以直接反映出来。d.键集(keyset)游标。类似于动态游标,也能够看到其他用户所作的数据修改,但不能看到其它用户新加的记录,也不能访问其他用户删除的记录。ADO中定义了四种不同的游标类型:动态游标—用于查看其他用户所作的添加、更改和删除;用于Recordset(不依赖于书签)中的所有移动类型;如果提供者支持,还可用于书签。键集游标—其行为类似动态游标,不同的只是它禁止查看其他用户添加的记录,并且禁止访问其他用户删除的记录。其他用户所作的数据更改依然可见。它始终支持书签,因此允许Recordset中的所有移动类型。静态游标—提供记录集的静态副本,可用来查找数据或生成报告;它始终支持书签,因此允许Recordset中的所有移动类型。其他用户所作的添加、更改或删除将不可见。当打开客户端Recordset对象时,这是唯一允许的游标类型。仅向前游标—只允许在Recordset中向前滚动。其他用户所作的添加、更改或删除将不可见。当只需要对Recordset进行一次传递时,可以提高性能。针对本CursorType的Recordset对于所有这些常量,Supports方法必须返回TrueadOpenForwardOnly无adOpenKeysetadBookmark、adHoldRecords、adMovePrevious和adResyncadOpenDynamicadMovePreviousadOpenStaticadBookmark、adHoldRecords、adMovePrevious和adResync指定在编辑过程中记录上的锁定类型。常量值说明adLockBatchOptimistic4指示开放式批更新。需要批更新模式。adLockOptimistic3指示逐个记录开放式锁定。提供者使用开放式锁定,仅在调用Update方法时锁定记录。adLockPessimistic2指示逐个记录保守式锁定。提供者要确保记录编辑成功,通常在编辑之后立即在数据源锁定记录。adLockReadOnly1指示只读记录。无法改变数据。adLockUnspecified-1未指定锁定类型。创建副本时,副本与源对象使用相同的锁定类型。游标服务是数据访问的重要内容,在第二部分介绍Recordset对象时,我们说明了游标的四种类型,在Recordset对象还有一个属性CursorLocation用于指定游标的位置,我们可以指定使用客户端的游标,也可以指定使用服务器端游标。CursorLocation属性的缺省值为adUseserver,使用服务器端游标的好处是,程序对数据库的修改可以立即反映到服务器,而且,其他用户对数据库的操作也可以马上反映出来,但使用服务器端游标带来了高网络流量,每一个数据访问都需要通过网络交换数据。ADO提供了客户端数据缓存处理,因此,在打开Recordset对象前,可以设置CursorLocation为adUseClient,指定使用客户端游标。通过客户端游标,ADO利用本地数据缓存以降低网络流量,虽然在数据访问灵活性上有所损失,但却大大提高了通过网络访问数据库的性能。批修改处理。我们知道Recordset对象的update方法用于修改当前记录,而updateBatch方法则用于递交所有对当前记录集的增、删、改操作。把Recordset对象的LockTyPe属性设置为adLockBatchoptimistic,则updateBatch方法有效,当然,不同的oLEDB提供者可能还会有不同的要求,比如,sQLserver提供者也要求游标类型为键集游标或静态游标。UpdateBatch方法可以一次把客户端所有的修改传送到数据库中,相对应地,也可以调用CancelBatch方法取消所有的修改操作说一下Recordset对象的属性1、CursorType属性AdOpenForwardOnly:仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。(顾名思义,这种游标只能向前移动。然而,由于这种游标功能有限,将它用于系统资源时是非常有效的。)AdOpenKeyset:键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。(KeySet游标允许你看见自它创建起其他用户所做的修改,然而你却不能看到其他用户增加或删除的记录。)AdOpenDynamic:动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。(此类型的游标功能强大同时也是耗费系统资源最多的游标。Dynamic游标可以看到他们保存记录集合的所有变化。使用Dynamic游标的用户可以看到其他用户所做的编辑、增加、删除。如果数据提供者允许这种类型的游标,那么它是通过每隔一段时间从数据源重取数据来支持这种可视性的。毫无疑问这会需要很多的资源。)AdOpenStatic:静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。(Static类游标只是数据的一幅快照。这就是说,它无法看到自它创建以后其他用户对RecordSet所做的修改。采用这类游标你可以向前和向后航行。由于其功能简单,资源的需求比Dynamic要小!)需要注意的是:一旦打开RecordSet,你就无法改变CursorType属性。但是,如果你首先关闭RecordSet,改变CursorType属性,然后重新打开RecordSet,那么你仍可以有效地改变游标的类型!2、LockType属性在任何同时可被多用户修改的数据库应用程序中,你必须处理可能发生的多个用户同时对同一条记录进行操作时的情况。当这种情况出现时,数据的完整性就会受到威胁,这是因为一个用户可能会在不自觉地在保存自己所做的修改时覆盖他人的修改。到时候你会觉得自己好象是没有做事。为了处理这种情况。ADO允许你在对RecordSet对象进行更新时决定并发事件控制的类型,当一个用户编辑时,如何由他对记录进行锁定。这就是由LockType属性所决定的。这个属性有四个值:adLockReadonly:默认值,只读。无法更改数据。(这是RecodSet的默认值,如果你把锁定的方式设为该值,那么你将不能更新Recordset。)adLockPessimistic:保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。(如果设置为此类锁定,记录被锁定,且只有在编辑开始到将记录更新的提交给数据提供者这段时间内进行编辑的用户才可以访问!)adLockOptimistic:开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用Update方法时锁定记录。(只有在将数据提交给数据提供者的那一瞬间才把记录锁定。)adlockBatchOptimistic:开放式批更新。用于与立即更新模式相反的批更新模式。(设定为这种类型的锁定制式将被称为批量更新模式的RecordSet。可以加快更新RecordSet修改数据的速度,但因为同时更新多个记录,它也会恶化与并发访问相关的问题!)vb数据库编程(一)--记录集Recordset标签:记录方法记录集移动属性2006-09-1020:26记录集是从数据库中按一定查询条件读入到内存中的一批记录,以供快速的操作。记录集recordset对象的属性,方法:BOF:当记录集记录指针指到起始记录(第1条记录)再向前移(即超过第1条记录),这时返回true.常用来对付一些出错情况。注:在BOF或EOF时使用update方法会出错。EOF:当记录指针指到最后一条记录之后(即超过了最后1条记录)时,该属性返回true.注:当一个记录集为空时,其BOF和EOF属性都为True,可据此检测一个记录集是否为空。AbsolutePosition:返回当前记录指针,即当前记录是第几条记录,只读。BookMark:设置/返回当前记录指针的书签,为字符串。如:在当前记录处设置书签:lxn=Adodc1.Recordset.BookMark当指针移动后回到指定书签位置:Adodc1.Recordset.BookMark=lxn.返回记录集中记录的总数:RecordCount属性。该属性对于表形式的记录集将返回精确数目,但对于仅向前型记录集(adOpenForwardOnly),返回-1。动态记录集(adOpenDynamic)则不一定,可能返回-1,与记录集的CursorLocation有关;而对于静态记录集(adOpenStatic),也总能返回精确数目。附:在DAO中,对动态集和快照集需要先用MoveFirst和Movelast方法,再用RecordCount取得记录精确数目。Move方法:移动记录集指针。该方法有两个参数,第一个参数指定要向前或向后移动多少条记录,第二个参数指定一个相对书签位置,表明从当前记录还是从第1条或最后1条记录开始算,缺省为0从当前记录开始移,将指针从当前位置向前(负数)或向后(正数)移动指定条记录(第二个‘按书签移动’参数设为0-adBookMarkCurrent从当前记录开始,缺省)或将指针从第1条记录算起移动指定条记录(第二个参数设为1-adBookMarkFirst从首记录)。或将指针从最后1条记录算起移动指定条记录(第二个参数设为adBookMarkLast),如:Adodc1.Recordset.Move-12,将指针从当前位置向前移动12条记录,再如Adodc1.Recordset.Move6,1表示指针从首记录开始后移6条记录,即使指针移到第7条记录。Move方法有几个引申的方法,如下:movefirst,记录集指针移到第1条记录;movelast,记录集指针移到最后1条记录;moveprevious,记录集指针移到上一条记录;movenext,记录集指针移到下一条记录。Find方法:查找满足条件的记录。find方法简略格式为:adodc对象.recordset.find查找表达式(为“字段比较符号值”)其他参数采用缺省,find工作方式是:从当前记录指针位置开始(含当前记录)向后逐条检索记录,遇到满足条件的1条记录就停下来,指针指到此记录。因此,若要实现“继续寻找下1个”的功能,只要将记录指针移到下1条记录(用movenext一下),再照原样使用find即可。而重新查找必须先用movefirst将指针指到开头。Adodc1.Recordset.find姓名='李长春'其中查找表达式的样子为“字段比较符号值”,比较符号不仅可以是等号,还可以是,,=,=,,like等。其中Like和=很相近,只不过like专用于字符串比较,不区分字母的大小写可用通配符,而=号会区分字母大小写不能用通配符。一般情况下,查找表达式常采用变量表示,由用户来确定,如下:DimlxnAsStringStaticaAsStringa=InputBox(请输入查找姓名,查找)lxn=NAMElike'&a&'.FindlxnLockType属性:设置记录集中的记录锁定方式,是否可修改及修改方式:有1-adLockReadOnly(只读);2-ad

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功