三天学好ADO之第二天

ado

今天说一下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修改数据的速度,但因为同时更新多个记录,它也会恶化与并发访问相关的问题! )

3、AbsolutePage 属性
AbsolutePage属性设定当前记录的位置是位于哪一页的页数编号;使用PageSize属性将Recordset对象分割为逻辑上的页数,每一页的记录数为PageSize(除了最后一页可能会有少于PageSize的记录数)。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。
与AbsolutePosition属性相同,AbsolutePage属性是以1为起始的,若当前记录为Recordset的第一行记录,AbsolutePage为1。可以设定AbsolutePage属性,以移动到一个指定页的第一行记录位置。
4、AbsolutePosition属性
若您需要确定目前指标在RecordSet中的位置,您可以用AbsolutePosition属性。
AbsolutePosition属性的数值为目前指标相对於第一笔的位置,由1算起,即第一笔的AbsolutePosition为1。
注意,在存取RecordSet时,无法保证RecordSet每次都以同样的顺序出现。
若要启用AbsolutePosition,必须先设定为使用用户端cursor(指针):rs.CursorLocation=3

5、PageCount属性
使用PageCount属性,决定Recordset对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于PageSize属性的设定,即使最后一页的记录数比PageSize的值少,最后一页也算是PageCount的一页。必须注意也并不是所有的数据提供者都支持此项属性。

6、PageSize属性
PageSize属性是决定ADO存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用AbsolutePage属性移到其它逻辑页的第一条记录。PageSize属性能随时被设定。

7、RecordCount属性
这也是一个非常常用和重要的属性,我们常用RecordCount属性来找出一个Recordset对象包括多少条记录。使用 RecordCount 属性可确定Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。Recordset 对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount 属性将返回 -1,对静态或键集游标返回实际计数,对动态游标取决于数据源返回 -1 或实际计数。

8、BOF与EOF属性
通常我们在ASP程序中编写代码来检验BOF与EOF属性,从而得知目前指标所指向的RecordSet的位置,使用BOF与EOF属性,可以得知一个Recordset对象是否包含有记录或者得知移动记录行是否已经超出该Recordset对象的范围。
若当前记录的位置是在一个Recordset对象第一行记录之前时,BOF属性返回true,反之则返回false。
若当前记录的位置是在一个Recordset对象最后一行记录之后时,EOF属性返回true,反之则返回false。
(BOF与EOF都为True表示在RecordSet里没有任何记录。)

9、Filter 属性
为 Recordset 中的数据指定筛选条件,使用 Filter 属性可选择性地屏蔽 Recordset 对象中的记录,已筛选的 Recordset 将成为当前游标。

这将影响基于当前游标返回值的其他属性,如 AbsolutePosition、AbsolutePage、RecordCount 和 PageCount,因为将 Filter 属性设置为特

定值可将当前记录移动到满足新值的第一个记录。
这属性我认为相当有用处,有的时候我们打开了Recordset进行了某些判断以后我们还想过滤记录也就是重新调整 sql 语句,难道我们关闭Recordset再用新的SQL语句打开?不是,我们用Filter属性进行过滤,比如说
rs.open exec,conn,1,1
if .... then rs.filter="name='xxx'"
而不是
rs.open exec,conn,1,1
if ... then
rs.close
exec=exec&" where name='xxx'"
rs.open exec,conn,1,1
end if
实际上再很多地方不得不用到Filter,在以后的ASP技巧中会说到,大家也可以想一下。
明天继续说Recordset对象的方法。

时间: 2024-12-22 16:06:20

三天学好ADO之第二天的相关文章

三天学好ADO之第一天

ado 在<十天学会ASP>教程中,我粗粗介绍了一下ADO,实际上可以说是点到为止.只说了Connection对象中的Open方法建立到数据源的物理连接,使用 Close 方法将其断开;Recordset 对象中的使用 AddNew.Update 和 Delete 方法所做的更改,在最后分页中提到了Recordset 对象中AbsolutePage和RecordCount属性.在这里我想有必要再较系统说一下ADO的各种对象的方法.属性.毕竟ADO不仅应用在ASP中,VB,VC都可以用到.在这十

三天学好ADO之第三天

ado 今天来说一下Recordset对象的一些方法.1.AddNew 方法创建可更新 Recordset 对象的新记录.recordset.AddNew FieldList, ValuesFieldList 可选.新记录中字段的单个名称.一组名称或序号位置.Values 可选.新记录中字段的单个或一组值.如果 Fields 是数组,那么 Values 也必须是有相同成员数的数组,否则将发生错误.字段名称的次序必须与每个数组中的字段值的次序相匹配. 我们一般是rs.addnewrs("xx&qu

c#中定义三个类,在第二个类中实例化第一个类,怎样在第三个类中存数据到第二个类实例的第一个类。

问题描述 c#中定义一个点的数组类,然后在另一个类中实例化点并赋值点的x,y,然后再另外建一个类读取点的近似坐标,怎样把近似坐标存入之前的那个已经有了x,y的点数组?求大神!!! 解决方案 解决方案二:第二个类中将第一个类的实例属性public出来,或者暴露相关设置方法解决方案三:list<T>解决方案四:如果把你提到的类,依次标记为clsA,clsB,clsC,那么clsB至少含有字段privateclsAxxx,privateList<clsA>xxx,分别是:存储点,存储近似

国家明确三项情况下执行第二套差别化信贷

全景网6月4日讯中国住房和城乡建设部.人民银行和银监会日前联合发布关于规范商业性个人住房贷款中第二套住房认定标准的通知,对有三类情形之一的,贷款人应对借款人执行第二套(及以上)差别化住房信贷政策. 通知要求,商业性个人住房贷款中居民家庭住房套数,应依据拟购房家庭(包括借款人.配偶及未成年子女)成员名下实际拥有的成套住房数量进行认定. 此外,应借款人的申请或授权,直辖市.计划单列市.省会(首府)城市及其他具备查询条件的城市房地产主管部门应通过房屋登记信息系统进行借款人家庭住房登记记录查询,并出具书

Asp.net中创建和使用Ado.net(三)

ado|asp.net|创建 Asp.net中创建和使用Ado.net(三) 三.使用 ADO.NET 连接到数据源在 ADO.NET 中,可以使用 Connection 对象来连接到指定的数据源.若要连接到 Microsoft SQL Server 7.0 版或更高版本,请使用 SQL Server .NET Framework 数据提供程序的 SqlConnection 对象.若要使用用于 SQL Server 的 OLE DB 提供程序 (SQLOLEDB) 连接到 OLE DB 数据源或

WebComputing━ADO总结报告3

ado|web 三.Error对象: 前面讲到了Connection对象是用于与各类的数据库进行挂接的,但在此过程中将会出现一些不可预测的错误,因而有了Error这个对象.首先要清楚一个概念,Error对象是在连接数据库时产生的,而并非那些运行时的实时错误.也就是我们常用 On Error Resume Next来忽略到的错误.这些错误将在Err对象中,我们可以用一个统一的模板来集中处理,我会在后面给出一个实例.下面还是先来看Error对象的属性和方法: 1. Count属性:用来统计Error

ADO.NET常用对象

一.Connection对象 Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接.所有Connection对象的基类都是DbConnection类. Connection对象有两个重要属性: (1)ConnectionString:表示用于打开 SQL Server 数据库的字符串: (2)State:表示 Connection 的状态,有Closed和Open两种状态. Connection对象有两个重要方法: (1)Open()方法:指示打开数据

使用ADO封装类的数据库程序开发实例(上)

源代码运行效果图如下: 开发实例(上)-vc数据库编程实例ado"> 一.前言 用过ADO的人都知道, 调用ADO要处理很多"麻烦"的事情,如异常处理等,要写很多try - catch块. 有点不甚其烦.我干脆把常用的函数都封装起来,免去老是要写try - catch块的麻烦.做起来虽然没有什么技术含量,但也比较烦琐,所以只完成了一部分,且由于时间及个人水平有限,没有对封装的东西作全面测试,并必定有很多错误,但想到对某些朋友可能有用.所以先"捐"出来

Visual C++ ADO数据库编程入门(下)

ado|c++|visual|编程|数据|数据库  10.邦定数据 定义一个绑定类,将其成员变量绑定到一个指定的记录集,以方便于访问记录集的字段值. (1). 从CADORecordBinding派生出一个类: class CCustomRs : public CADORecordBinding{BEGIN_ADO_BINDING(CCustomRs)ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_szau_fname, sizeof(m_szau_fnam