<p> Connection对象中的Open方法建立到数据源的物理连接,使用 Close 方法将其断开;Recordset 对象中的使用 AddNew、Update 和 Delete 方法所做的更改,在最后分页中提到了Recordset 对象中AbsolutePage和RecordCount属性。在这里我想有必要再较系统说一下ADO的各种对象的方法、属性。毕竟ADO不仅应用在ASP中,VB,VC都可以用到。在这十天中我想主要提到的对象是:</p><p> Connection对象(代表打开的、与数据源的连接。)</p><p> RecordSet对象(代表来自基本表或命令执行结果的记录的全集。)</p><p> 至于和存储过程密切相关的Parameter对象和Command对象会在以后的教程中详细说。</p><p> 先来说一下Connection对象的方法:</p><p> 1、Open方法</p><p> connection.Open ConnectionString, UserID, Password, Options</p><p> ConnectionString 可选,字符串,包含连接信息。</p><p> UserID 可选,字符串,包含建立连接时所使用用户名。</p><p> Password 可选,字符串,包含建立连接时所使用密码。</p><p> Options 可选,ConnectOptionEnum 值。决定该方法是在连接建立之后(异步)还是连接建立之前(同步)返回。可以是如下某个常量:</p><p> adConnectUnspecified (默认)同步打开连接。</p><p> adAsyncConnect 异步打开连接。</p><p> 2、Execute方法</p><p> connection.Execute CommandText, RecordsAffected</p><p> CommandText 字符串,包含要执行的 SQL 语句、表名、存储过程或特定提供者的文本。</p><p> RecordsAffected 可选,长整型变量,提供者向其返回操作所影响的记录数目。</p><p> 3、Close方法</p><p> connection.Close</p><p> 使用 Close 方法可关闭 Connection 对象以便释放所有关联的系统资源。</p>
<p> </p>
<p> 需要注意的是:</p><p> (1)关闭对象并非将它从内存中删除,可以更改它的属性设置并且在此后再次打开。</p><p> (2)要将对象从内存中完全删除,可将对象变量设置为 Nothing。</p><p> (3)使用 Close 方法关闭 Connection 对象的同时,也将关闭与连接相关联的任何活动 Recordset 对象。</p><p> (4)关闭 Connection 对象后,调用任何需要打开与对数据源连接的方法都将产生错误。</p><p> 以上三种方法,大家都应该是熟知的。</p><p> 下面说一下Connection对象的属性,简单提一下。</p><p> 1、Provider属性</p><p> 使用 Provider 属性指定 OLE DB 提供者。</p><p> 需要注意的是:调用 Open 方法时在多处指定提供者可能会产生无法预料的后果。</p><p> 2、ConnectionString 属性</p><p> 包含用于建立连接数据源的信息。</p><p> 3、ConnectionTimeout 属性</p><p> 指示在终止尝试和产生错误前建立连接期间所等待的时间,等待连接打开的时间的长整型值(单位为秒)。默认值为 15。</p><p> 4、Mode 属性</p><p> 指示在 Connection 中修改数据的可用权限。</p><p> 常量 说明</p><p> AdModeUnknown 默认值。表明权限尚未设置或无法确定。</p><p> AdModeRead 表明权限为只读。</p><p> AdModeWrite 表明权限为只写。</p><p> AdModeReadWrite 表明权限为读/写。</p><p> AdModeShareDenyRead 防止其他用户使用读权限打开连接。</p><p> AdModeShareDenyWrite 防止其他用户使用写权限打开连接。</p><p> AdModeShareExclusive 防止其他用户打开连接。</p><p> AdModeShareDenyNone 防止其他用户使用任何权限打开连接。</p><p> 需要注意的是:</p><p> 使用 Mode 属性可设置或返回当前连接上提供者正在使用的访问权限。Mode 属性只能在关闭 Connection 对象时才能够设置</p>
<p> </p>
<p> 说一下Recordset 对象的属性</p><p> 1、CursorType 属性</p><p> AdOpenForwardOnly: 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。(顾名思义,这种游标只能向前移动。然而,由于这种游标功能有限,将它用于系统资源时是非常有效的。)</p><p> AdOpenKeyset: 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。(KeySet游标允许你看见自它创建起其他用户所做的修改,然而你却不能看到其他用户增加或删除的记录。)</p><p> AdOpenDynamic :动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。(此类型的游标功能强大同时也是耗费系统资源最多的游标。Dynamic游标可以看到他们保存记录集合的所有变化。使用Dynamic游标的用户可以看到其他用户所做的编辑、增加、删除。如果数据提供者允许这种类型的游标,那么它是通过每隔一段时间从数据源重取数据来支持这种可视性的。毫无疑问这会需要很多的资源。 )</p><p> AdOpenStatic:静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。(Static类游标只是数据的一幅快照。这就是说,它无法看到自它创建以后其他用户对RecordSet所做的修改。采用这类游标你可以向前和向后航行。由于其功能简单,资源的需求比Dynamic要小! )</p><p> 需要注意的是:一旦打开RecordSet,你就无法改变CursorType属性。但是,如果你首先关闭RecordSet,改变CursorType属性,然后重新打开RecordSet,那么你仍可以有效地改变游标的类型! </p>
<p> </p>
<p> 2、LockType 属性</p><p> 在任何同时可被多用户修改的数据库应用程序中,你必须处理可能发生的多个用户同时对同一条记录进行操作时的情况。当这种情况出现时,数据的完整性就会受到威胁,这是因为一个用户可能会在不自觉地在保存自己所做的修改时覆盖他人的修改。到时候你会觉得自己好象是没有做事。为了处理这种情况。ADO允许你在对RecordSet对象进行更新时决定并发事件控制的类型,当一个用户编辑时,如何由他对记录进行锁定。这就是由LockType属性所决定的。这个属性有四个值:</p><p> adLockReadonly:默认值,只读。无法更改数据。(这是RecodSet的默认值,如果你把锁定的方式设为该值,那么你将不能更新 Recordset。)</p><p> adLockPessimistic:保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。(如果设置为此类锁定,记录被锁定,且只有在编辑开始到将记录更新的提交给数据提供者这段时间内进行编辑的用户才可以访问! )</p><p> adLockOptimistic:开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用 Update 方法时锁定记录。(只有在将数据提交给数据提供者的那一瞬间才把记录锁定。)</p><p> adlockBatchOptimistic:开放式批更新。用于与立即更新模式相反的批更新模式。(设定为这种类型的锁定制式将被称为批量更新模式的RecordSet。 可以加快更新RecordSet修改数据的速度,但因为同时更新多个记录,它也会恶化与并发访问相关的问题! )</p><p> 3、AbsolutePage 属性</p><p> AbsolutePage属性设定当前记录的位置是位于哪一页的页数编号;使用PageSize属性将Recordset对象分割为逻辑上的页数,每一页的记录数为PageSize(除了最后一页可能会有少于PageSize的记录数)。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。</p>
<p> </p>
<p> 与AbsolutePosition属性相同,AbsolutePage属性是以1为起始的,若当前记录为Recordset的第一行记录,AbsolutePage为1。可以设定AbsolutePage属性,以移动到一个指定页的第一行记录位置。</p><p> 4、AbsolutePosition属性</p><p> 若您需要确定目前指标在RecordSet中的位置,您可以用AbsolutePosition属性。</p><p> AbsolutePosition属性的数值为目前指标相对於第一笔的位置,由1算起,即第一笔的AbsolutePosition为1。</p><p> 注意,在存取RecordSet时,无法保证RecordSet每次都以同样的顺序出现。</p><p> 若要启用AbsolutePosition,必须先设定为使用用户端cursor(指针):rs.CursorLocation=3 </p><p> 5、PageCount属性</p><p> 使用PageCount属性,决定Recordset对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于PageSize属性的设定,即使最后一页的记录数比PageSize的值少,最后一页也算是PageCount的一页。必须注意也并不是所有的数据提供者都支持此项属性。</p><p> 6、PageSize属性</p><p> PageSize属性是决定ADO存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用AbsolutePage属性移到其它逻辑页的第一条记录。PageSize属性能随时被设定。</p><p> 7、RecordCount属性</p><p> 这也是一个非常常用和重要的属性,我们常用RecordCount属性来找出一个Recordset对象包括多少条记录。使用 RecordCount 属性可确定Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回