幻灯片 上海师范大学_第1页
幻灯片 上海师范大学_第2页
幻灯片 上海师范大学_第3页
幻灯片 上海师范大学_第4页
幻灯片 上海师范大学_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十四讲 ASP应用之六:ADOConnect对象Recordset对象Connection对象中的Open方法建立到数据源的物理连接,使用 Close 方法将其断开;Recordset 对象中的使用 AddNew、Update 和 Delete 方法所做的更改,在最后分页中提到了Recordset 对象中AbsolutePage和RecordCount属性。在这里我想有必要再较系统说一下ADO的各种对象的方法、属性。Connection对象(代表打开的、与数据源的连接。)RecordSet对象(代表来自基本表或命令执行结果的记录的全集。)Connection对象的方法 1、Open方法con

2、nection.Open ConnectionString, UserID, Password, Options ConnectionString 可选,字符串,包含连接信息。UserID 可选,字符串,包含建立连接时所使用用户名。Password 可选,字符串,包含建立连接时所使用密码。Options 可选,ConnectOptionEnum 值。决定该方法是在连接建立之后(异步)还是连接建立之前(同步)返回。可以是如下某个常量:adConnectUnspecified (默认)同步打开连接。 adAsyncConnect 异步打开连接。Connection对象的方法 2、Execute方法

3、connection.Execute CommandText, RecordsAffected CommandText 字符串,包含要执行的 SQL 语句、表名、存储过程或特定提供者的文本。 RecordsAffected 可选,长整型变量,提供者向其返回操作所影响的记录数目。Connection对象的方法 3、Close方法connection.Close使用 Close 方法可关闭 Connection 对象以便释放所有关联的系统资源。需要注意的是:(1)关闭对象并非将它从内存中删除,可以更改它的属性设置并且在此后再次打开。(2)要将对象从内存中完全删除,可将对象变量设置为 Nothing

4、。(3)使用 Close 方法关闭 Connection 对象的同时,也将关闭与连接相关联的任何活动 Recordset 对象。(4)关闭 Connection 对象后,调用任何需要打开与对数据源连接的方法都将产生错误。Connection对象的属性 1、Provider属性使用 Provider 属性指定 OLE DB 提供者。需要注意的是:调用 Open 方法时在多处指定提供者可能会产生无法预料的后果。2、ConnectionString 属性包含用于建立连接数据源的信息。3、ConnectionTimeout 属性指示在终止尝试和产生错误前建立连接期间所等待的时间,等待连接打开的时间的长

5、整型值(单位为秒)。默认值为 15。Connection对象的属性4、Mode 属性指示在 Connection 中修改数据的可用权限。常量 说明 AdModeUnknown 默认值。表明权限尚未设置或无法确定。 AdModeRead 表明权限为只读。 AdModeWrite 表明权限为只写。 AdModeReadWrite 表明权限为读/写。 AdModeShareDenyRead 防止其他用户使用读权限打开连接。 AdModeShareDenyWrite 防止其他用户使用写权限打开连接。 AdModeShareExclusive 防止其他用户打开连接。 AdModeShareDenyNon

6、e 防止其他用户使用任何权限打开连接。 需要注意的是:使用 Mode 属性可设置或返回当前连接上提供者正在使用的访问权限。Mode 属性只能在关闭 Connection 对象时才能够设置。Recordset 对象的属性1、CursorType 属性 AdOpenForwardOnly: 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。(顾名思义,这种游标只能向前移动。然而,由于这种游标功能有限,将它用于系统资源时是非常有效的。) AdOpenKeyset: 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户

7、添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。(KeySet游标允许你看见自它创建起其他用户所做的修改,然而你却不能看到其他用户增加或删除的记录。)Recordset 对象的属性1、CursorType 属性 AdOpenDynamic :动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。(此类型的游标功能强大同时也是耗费系统资源最多的游标。Dynamic游标可以看到他们保存记录集合的所有变化。使用Dynamic游标的用户可以看到其他用户所做的编辑、增加、删除。如果数据提供者允许这种类型的游标,那么它是通

8、过每隔一段时间从数据源重取数据来支持这种可视性的。毫无疑问这会需要很多的资源。 ) Recordset 对象的属性1、CursorType 属性 AdOpenStatic:静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。(Static类游标只是数据的一幅快照。这就是说,它无法看到自它创建以后其他用户对RecordSet所做的修改。采用这类游标你可以向前和向后航行。由于其功能简单,资源的需求比Dynamic要小! ) 需要注意的是:一旦打开RecordSet,你就无法改变CursorType属性。但是,如果你首先关闭RecordSet,改变

9、CursorType属性,然后重新打开RecordSet,那么你仍可以有效地改变游标的类型!Recordset 对象的属性2、LockType 属性 在任何同时可被多用户修改的数据库应用程序中,你必须处理可能发生的多个用户同时对同一条记录进行操作时的情况。当这种情况出现时,数据的完整性就会受到威胁,这是因为一个用户可能会在不自觉地在保存自己所做的修改时覆盖他人的修改。到时候你会觉得自己好象是没有做事。为了处理这种情况。ADO允许你在对RecordSet对象进行更新时决定并发事件控制的类型,当一个用户编辑时,如何由他对记录进行锁定。这就是由LockType属性所决定的。Recordset 对象的

10、属性2、LockType 属性 这个属性有四个值:adLockReadonly:默认值,只读。无法更改数据。(这是RecodSet的默认值,如果你把锁定的方式设为该值,那么你将不能更新 Recordset。)adLockPessimistic:保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。(如果设置为此类锁定,记录被锁定,且只有在编辑开始到将记录更新的提交给数据提供者这段时间内进行编辑的用户才可以访问! )Recordset 对象的属性2、LockType 属性 adLockOptimistic:开放式记录锁定(逐条)。提供者使用开放式

11、锁定,只在调用 Update 方法时锁定记录。(只有在将数据提交给数据提供者的那一瞬间才把记录锁定。)adlockBatchOptimistic:开放式批更新。用于与立即更新模式相反的批更新模式。(设定为这种类型的锁定制式将被称为批量更新模式的RecordSet。 可以加快更新RecordSet修改数据的速度,但因为同时更新多个记录,它也会恶化与并发访问相关的问题! )Recordset 对象的属性3、AbsolutePage 属性 AbsolutePage属性设定当前记录的位置是位于哪一页的页数编号;使用PageSize属性将Recordset对象分割为逻辑上的页数,每一页的记录数为Page

12、Size(除了最后一页可能会有少于PageSize的记录数)。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。 与AbsolutePosition属性相同,AbsolutePage属性是以1为起始的,若当前记录为Recordset的第一行记录,AbsolutePage为1。可以设定AbsolutePage属性,以移动到一个指定页的第一行记录位置。 Recordset 对象的属性4、AbsolutePosition属性 若您需要确定目前指标在RecordSet中的位置,您可以用AbsolutePosition属性。 AbsolutePosition属性的数值为目前指标相对於第

13、一笔的位置,由1算起,即第一笔的AbsolutePosition为1。 注意,在存取RecordSet时,无法保证RecordSet每次都以同样的顺序出现。 若要启用AbsolutePosition,必须先设定为使用用户端cursor(指针):rs.CursorLocation=3 Recordset 对象的属性5、PageCount属性 使用PageCount属性,决定Recordset对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于PageSize属性的设定,即使最后一页的记录数比PageSize的值少,最后一页也算是PageCount的一页。必须注意也并不是所有的数据提供

14、者都支持此项属性。Recordset 对象的属性6、PageSize属性 PageSize属性是决定ADO存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用AbsolutePage属性移到其它逻辑页的第一条记录。PageSize属性能随时被设定。Recordset 对象的属性7、RecordCount属性 这也是一个非常常用和重要的属性,我们常用RecordCount属性来找出一个Recordset对象包括多少条记录。使用 RecordCount 属性可确定Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如

15、果提供者或游标类型不支持 RecordCount,则该属性返回 1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。Recordset 对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount 属性将返回 -1,对静态或键集游标返回实际计数,对动态游标取决于数据源返回 -1 或实际计数。Recordset 对象的属性8、BOF与EOF属性 通常我们在ASP程序中编写代码来检验BOF与EOF属性,从而得知目前指标所指向的RecordSet的位置,使用BOF与EOF属性,可以得知一个Recordset对象是否包含有记录或者得知移动记录行是否已经

16、超出该Recordset对象的范围。若当前记录的位置是在一个Recordset对象第一行记录之前时,BOF属性返回true,反之则返回false。 若当前记录的位置是在一个Recordset对象最后一行记录之后时,EOF属性返回true,反之则返回false。 (BOF与EOF都为True表示在RecordSet里没有任何记录。)Recordset 对象的属性9、Filter 属性 为 Recordset 中的数据指定筛选条件,使用 Filter 属性可选择性地屏蔽 Recordset 对象中的记录,已筛选的 Recordset 将成为当前游标。这将影响基于当前游标返回值的其他属性,如 Abs

17、olutePosition、AbsolutePage、RecordCount 和 PageCount,因为将 Filter 属性设置为特定值可将当前记录移动到满足新值的第一个记录。 这属性我认为相当有用处,有的时候我们打开了Recordset进行了某些判断以后我们还想过滤记录也就是重新调整 sql 语句,难道我们关闭Recordset再用新的SQL语句打开?不是,我们用Filter属性进行过滤Recordset 对象的属性9、Filter 属性 比如说rs.open exec,conn,1,1if . then rs.filter=name=xxx而不是rs.open exec,conn,1,

18、1if . thenrs.closeexec=exec& where name=xxxrs.open exec,conn,1,1end ifRecordset 对象的方法1、AddNew 方法创建可更新 Recordset 对象的新记录。recordset.AddNew FieldList, ValuesFieldList 可选。新记录中字段的单个名称、一组名称或序号位置。Values 可选。新记录中字段的单个或一组值。如果 Fields 是数组,那么 Values 也必须是有相同成员数的数组,否则将发生错误。字段名称的次序必须与每个数组中的字段值的次序相匹配。Recordset 对象的方法1、AddNew 方法 我们一般是rs.addnewrs(xx)=xxrs(xx)=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论