补充1:AD0对象编程 1.1ADO基础 1.1.1AD0的介绍 AD0是 ActiveX data0 bject的缩写,它是 Microsoft数据库应用程序开发的新接口,是 Microsoft新的数据访问技术,是建立在 OLE DB 之上的高层数据库访问技术。 AD0被设计用来同新的数据访问层 OLE DB Provider一起协同工作,以提供通用数据访问 Universal Data access)。 OLE DB是一个低层的 数据访问接口,用它可以访问各种数据源,包括传 统的关系型数据库,以及电子邮件系统及自定义的 商业对象 即使对 OLE DB不了解也能轻松使用AD0,因为 它非常简单易用,并不失灵活性。 AD0向VB程序员提供了很多好处,包括易于使 用、熟悉的界面,高速度以及较低的内存占用。同 传统的数据对象层次(①DA0和RD0)不同,ADO可以独 立建立。因此可以只创建一个“ Connection”对象 但是可以有多个,独立的“ Recordset”对象来使 用它,另外AD0针对客户/服务器以及Web应用程 序作了优化
补充 1:ADO 对象编程 1.1ADO 基础 1.1.1 ADO 的介绍 ADO 是 ActiveX Data Object 的缩写,它是 Microsoft 数据库应用程序开发的新接口,是 Microsoft 新的数据访问技术,是建立在 OLE DB 之上的高层数据库访问技术。 ADO 被设计用来同新的数据访问层 OLE DB Provider 一起协同工作,以提供通用数据访问 (Universal Data Access)。OLE DB 是一个低层的 数据访问接口,用它可以访问各种数据源,包括传 统的关系型数据库,以及电子邮件系统及自定义的 商业对象 即使对 OLE DB 不了解也能轻松使用 ADO,因为 它非常简单易用,并不失灵活性。 ADO 向 VB 程序员提供了很多好处,包括易于使 用、熟悉的界面,高速度以及较低的内存占用。同 传统的数据对象层次(DAO 和 RDO)不同,ADO 可以独 立建立。因此可以只创建一个“Connection”对象, 但是可以有多个,独立的“Recordset”对象来使 用它,另外 ADO 针对客户/服务器以及 Web 应用程 序作了优化
AD0最基本的操作流程:初始化COM库,引入 AD0库定义文件;用 Connection对象连接数据库; 利用建立好的连接,通过 Connection、 Command对 象执行SQL命令,或利用 Recordset对象取得结果 记录集进行查询、处理;使用完毕后关闭连接释放 对象。 1.1.2AD0的对象 数据库连接对象- Connection 这是AD0的最大特点。每一次引用数据库可以 建立一个连接对象,然后在其之上建立多个 RecordSet对象,方便远程连接的操作。 建立一个 Connection的方法很简单,下面例 子主要介绍了 Connection对象的创建、连接数据 库以及关闭连接的方法: Sub ConnectionExampleo Dim cnn as adodb connection Set cnn=new adodB. connection 通过 ODBC DSN打开数据库 cnn.open“pubs”,"”sa”,”” 检査是否成功建立连接对象 if cnn. state=adStateOpen then msgbox“ Welcome to pubs!” else msgbox orry, no pubs
ADO 最基本的操作流程:初始化 COM 库,引入 ADO 库定义文件;用 Connection 对象连接数据库; 利用建立好的连接,通过 Connection、Command 对 象执行 SQL 命令,或利用 Recordset 对象取得结果 记录集进行查询、处理;使用完毕后关闭连接释放 对象。 1.1.2 AD0 的对象 1. 数据库连接对象——Connection 这是 ADO 的最大特点。每一次引用数据库可以 建 立 一个连接 对 象 ,然后 在其之上建立 多 个 RecordSet 对象,方便远程连接的操作。 建立一个 Connection 的方法很简单,下面例 子主要介绍了 Connection 对象的创建、连接数据 库以及关闭连接的方法: Sub ConnectionExample() Dim cnn as ADODB.connection Set cnn=new ADODB.connection ’通过 ODBC DSN 打开数据库 cnn.open “pubs”,”sa”,”” ’检查是否成功建立连接对象 if cnn.state=adStateOpen then msgbox “Welcome to pubs!” else msgbox “Sorry,no pubs!
end if 关闭连接对象 cnn. close End sub 其重要属性如表1-1所示。 表1-1 Connection对象属性列表 属性 功能 connectioNstring开 Connection时的参数设置。主要有以下几项 Provider、 File Name、Re皿 ote provider、 Remote Server、URL DefaultDatabasel定义 Connection对象的缺省数据库 Provider定义 Connection对象的数据库 OLE DB的提供者,如sQ Server之类 State 挡前状态,只读。主要返回值为 asTate0pen或 adStateExecuting 其重要方法如表1—2所示。 表1-2 Connection对象方法列表 方法 功能 BeginTrans併始一个新的处理事务( Transaction) ollbackTrans做弃当前所有的处理事务并开启一个新的事务 ance 终止当前的数据库操作 ose 关闭释放 Connection,对象 xecute 执行SQL语言,或者查询 Open 打开 Connection对象
end if ’关闭连接对象 cnn.close End sub 其重要属性如表 1—1 所示。 表 1-1 Connection 对象属性列表 属性 功能 ConnectionString 打开Connection时的参数设置。主要有以下几项: Provider、File Name、Remote Provider、Remote Server、URL DefaultDatabase 定义Connection对象的缺省数据库 Provider 定义Connection对象的数据库OLE DB的提供者,如SQL Server之类 State 当 前 状 态 ,只 读 。主 要 返回 值 为adStateOpen 或 adStateExecuting 其重要方法如表 1—2 所示。 表 1-2 Connection 对象方法列表 方法 功能 BeginTrans 开始一个新的处理事务(Transaction) RollbackTrans 放弃当前所有的处理事务并开启一个新的事务 Cancel 终止当前的数据库操作 Close 关闭释放Connection对象 Execute 执行SQL语言,或者查询 Open 打开Connection对象
在建立连接对象后,可以通过conn. Execute 方法执行SQL,实现所需的一切功能。编写数据库 程序时,在修改数据库内容方面,这种方法很方便 而且功能强大。 2.记录集对象一— - Recordset Recordset对象表示的是来自基本表或命令执行 结果的记录全集,任何时候, Recordset对象所指 的当前记录均为集合内的单个记录。 可使用 Recordset对象操作来自提供者的数 据,使用AD0时,通过 Records对象可对几乎所有 数据进行操作。所有 Recordset对象均使用记录(行) 和字段(列)进行构造。由于提供者所支持的功能不 同,某些 Recordset方法或属性有可能无效。 打开 Recordset时,当前记录位于第一个记录 (如果有),并且BOF和EOF属性被设置为 False 如果没有记录,BOF和EOF属性设置是True 假设提供者支持相关的功能,可以使用 Movefirst、 Movelast、 MoveNext和 MovePrevious 方法以及Move方法,和 Absoluteposition、 AbsolutePage和 Filter属性来重新确定当前记录 的位置
在建立连接对象后,可以通过 conn.Execute 方法执行 SQL,实现所需的一切功能。编写数据库 程序时,在修改数据库内容方面,这种方法很方便 而且功能强大。 2.记录集对象——Recordset Recordset 对象表示的是来自基本表或命令执行 结果的记录全集,任何时候,Recordset 对象所指 的当前记录均为集合内的单个记录。 可使用 Recordset 对象操作来自提供者的数 据,使用 ADO 时,通过 Records 对象可对几乎所有 数据进行操作。所有Recordset对象均使用记录(行) 和字段(列)进行构造。由于提供者所支持的功能不 同,某些 Recordset 方法或属性有可能无效。 打开 Recordset 时,当前记录位于第一个记录 (如果有),并且 BOF 和 EOF 属性被设置为 False。 如果没有记录,BOF 和 EOF 属性设置是 True。 假 设 提 供 者 支 持 相 关 的 功 能 , 可 以 使 用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法 以及 Move 方法,和 AbsolutePosition、 AbsolutePage 和 Filter 属性来重新确定当前记录 的位置
Recordset对象可支持两类更新:立即更新和 批更新。 使用立即更新,一旦调用 Update方法,对数 据的所有更改将被立即写入基本数据源。也可以使 用 AddNew和 Update方法将值的数组作为参数传 递,同时更新记录的若干字段。 如果提供者支持批更新,可以使提供者将多个 记录的更改存入缓存,然后使用 UpdateBatch方法 在单个调用中将它们传送给数据库。这种情况应用 于使用 AddNew、 Update和 Delete方法所做的更改。 调用 UpdateBatch方法后,可以使用 Status属性 检查任何数据冲突并加以解决。 3.命令对象—- Command(了解) Command对象也是AD0的特色之一。一般用于 大量数据的操作或者是对数据库表单结构的操作。 Command的重要属性如表1-3所示,重要方法如表 1-4所示。 表1-3 Command对象属性列表 属性 功能 tive Connection指定当前命令对象属于哪个 Connection CommandStream指定提供命令参数的流 ommandtext 指定参数
Recordset 对象可支持两类更新:立即更新和 批更新。 使用立即更新,一旦调用 Update 方法,对数 据的所有更改将被立即写入基本数据源。也可以使 用 AddNew 和 Update 方法将值的数组作为参数传 递,同时更新记录的若干字段。 如果提供者支持批更新,可以使提供者将多个 记录的更改存入缓存,然后使用 UpdateBatch 方法 在单个调用中将它们传送给数据库。这种情况应用 于使用 AddNew、Update 和 Delete 方法所做的更改。 调用 UpdateBatch 方法后,可以使用 Status 属性 检查任何数据冲突并加以解决。 3.命令对象——Command (了解) Command 对象也是 ADO 的特色之一。一般用于 大量数据的操作或者是对数据库表单结构的操作。 Command 的重要属性如表 1-3 所示,重要方法如表 1-4 所示。 表 1-3 Command 对象属性列表 属性 功能 ActiveConnection 指定当前命令对象属于哪个Connection CommandStream 指定提供命令参数的流 CommandText 指定参数