第10章 开发ADO数据库组件
ADO操作数据库的方法步骤

ADO操作数据库的方法步骤ADO(ActiveX Data Objects)是一种用于操作数据库的技术,它提供了一组对象和方法,可以有效地与数据库进行交互。
ADO是使用OLE DB (Object Linking and Embedding Database)技术来实现的,它可以连接多种不同的数据库,包括SQL Server、Oracle、Access等。
下面是使用ADO操作数据库的方法步骤。
1.引用ADO库要使用ADO操作数据库,首先需要在项目中引用ADO库。
可以在编程环境中的“引用”或者“项目属性”中添加对ADO库的引用,确保可以使用ADO库提供的对象和方法。
2.创建连接对象创建一个ADO连接对象以连接到数据库。
连接对象是ADO的核心对象之一,它提供了与数据库建立连接和断开连接的功能。
可以使用Connection对象的构造函数或者使用CreateObject函数创建一个连接对象。
3.打开连接使用连接对象的Open方法来打开连接。
在打开连接之前,需要设置连接字符串(Connection String),连接字符串包含了连接数据库的详细信息,比如数据库的类型、服务器地址、用户名、密码等。
可以使用连接字符串构造函数或者直接设置连接对象的ConnectionString属性来设置连接字符串。
4.创建命令对象5.设置命令类型和SQL语句6.执行命令使用命令对象的Execute方法来执行命令。
如果SQL语句是查询语句,可以使用命令对象的Execute方法或者ExecuteReader方法执行命令,并使用记录集对象来获取返回的数据。
如果SQL语句是更新、插入或删除语句,可以使用ExecuteNonQuery方法来执行命令,该方法返回受影响的行数。
7.处理返回的数据如果执行的是查询语句,可以使用记录集对象来获取返回的数据。
可以使用记录集对象的MoveFirst方法将指针移动到第一条记录,然后使用各种属性和方法来访问记录集中的数据,比如Fields,RecordCount,EOF等。
ADO组件

ADO组件ADO全称为:ActiveX Data Object。
用户可能通过ADO组件来存取数据。
ADO通过微软OLEDB数据访问技术来为众多数据提供一个高级界面。
OLEDB是Microsoft提出的数据访问的系统的接口。
OLEDB是一个开放的技术体系,它继承了Microsoft较早提出的ODBC,目的在于提供一个能跨平台访问数据库的数据库接口。
OLEDB 数据访问技术可以让用户快速地访问任何数据源,包括关系数据库和非关系数据库、电子邮件和文件系统、文本和图像以及用户自定义的商业对象等多种数据源。
组件和主要功能分别是:1、ADOConnection用于建立ADO数据库的永久连接,并支持事务功能。
2、ADODataSet用于从ADO数据库的一个或多个数据表检索数据,并允许数据控制组件通过与DataSource 组件相连来操纵该数据,它是用于检索和操作数据库中数据的主要组件。
3、ADOTable用于检索ADO数据库中的一个单一数据表生成的数据集,并允许数据控制组件通过与DataSource组件相连来操纵该数据集。
4、ADOQuery使用合法的SQL语句来检索物理数据表中的数据集,并允许数据控制组件通过与DataSource 组件相连来操纵该数据表。
5、ADOStoredproc用于执行存储过程,该组件可以实现执行检索数据或执行SQL语言的DLL语句的存储过程。
6、ADOCommand用于向ADO数据库直接发送一条SQL命令。
这些命令不返回结果集。
7、RDSConnection用于将Recordset对象从一个过程或机器传递到另一个过程或机器时管理数据的汇集。
它可以用来建立使用商业对象如应用服务器的多层客户/服务器应用程序。
ADOConnection组件详解1、常用属性:(1)Attributes属性属性声明如下:_property TxcatAttributes Attributes={read=GetAttributes,write=SetAttributes,default=0};这个属性用于设置与ADO数据库的连接特性。
第10章 开发ADO数据库组件

图10-4 工程创建向导COM服务器类型。
单击工程创建向导“New”窗口的“OK”按钮,COM AppWizard – Step 1 of 1”窗口,如图10-5所示,开始创建ADOAccessor工程的第一步是选择组件服务器的类型。
组件服务器通常有三种类型:动态Dynamic Link Library,DLL)、可执行(Excutable)EXE和服务(Service这里我们选择第一种,即动态链接库(缺省设置)。
TL COM AppWizard – Step 1 of 1”窗口里,点击“Finish”按钮,进入下一步。
图10-5 选择COM服务器类型弹出的工程新建信息“New Project Information”对话框显示了工程创建信息,如图10-6 工程创建信息对象库的支持ADO,我们需要将ADO库引入工程。
操作系统都提供了的形式存放的,在进行ADO编程时,首先要将这个库引入工程。
ADO库引入ADOAccessor工程。
"E:\Program Files\Common Files\System\ado\msado15.dll" no_namespace可以将这段代码加到工程的stdafx.h里,也可以加到工程的ADODemo.h时候要注意下面的问题:必须先在系统里查找msado15.dll文件的路径。
由于在不同的系统安装时,这个路径可能不同,不过通常该文件都在系统的“Program Files\Common Files\System\ado我们在本实例里使用的是ADO的1.5版本,也许你的操作系统不支持版的,或者是2.0版本,这时需要将这个库文件名称改为相应的文件名即可。
图10-7 “ATL Object Wizard”对话框TL Object Wizard”对话框的“Category”列表里选择“Objects 列表里选择“Simple Object”项,然后单击“Next”按钮,属性”对话框,如图10-8所示。
第10章 ADO数据库编程

(b)执行后
(a)执行前
10.3 RecordSet对象
10.3.1 Recordset对象简介
在ADO中定义了四种不同的游标类型: (1)动态游标 (2)键集游标 (3)静态游标 (4)仅向前游标
10.3.2
Recordset对象的属性
1.AbsolutePage、PageCount与PageSize属性 2.AbsolutePosition和RecordCount属性 3.ActiveConnection属性 4.CacheSize属性
题意分析:本题要用MsFlexGrid控件显示 表的内容,而MsFlexGrid控件并不是VB的标准 控件,应该首先把它加载到VB的工程中,加载 的方法是执行【工程】→【部件】命令,在出 现的部件对话框中选中“Microsoft FlexGrid Control 6.0”后按“确定”按钮。要在 MSFlexGrid控件中显示数据表中的内容,可通 过循环把表中的各字段的内容依次赋值到 MsFlexGrid的MatrixText属性中。
10.1.2 ADO模型的对象
1.基本对象
(1)Connection对象 (2)Recordset对象 (3)Command对象 (4)Field对象 (5)Property对象 (6)Parameter属性 (7)Error对象 2.集合对象 (1)Errors集合对象 (2)Parameters对象 (3)Fields对象 (4)Properties对象 3.事件 (1)ConnectionEvents类事件 (2)RecordsetEvents类事件
10.2.3 连接到数据库的方法
1.通过DSN建立连接
【例10-1】在第7章建立了两个DSN,分别是jiaoxue和 SQLPubs,请编写一个连接到这两个DSN的程序。程序 的设计界面如图10-4所示。然后执行时,单击“建立 到SQLPubs的连接”将建立与SQLPubs DSN的连接,单 “建立到jiaoxue DSN的连接”将建立与jiaoxue DSN 的连接。 题意分析:为建立连接,可先给Connection对象 的ConnectionString属性赋值为需要建立连接的参数, 然后执行Connection对象不带参数的Open方法,也可 在调用Connection的Open方法时指定连接字符串。此 题需注意连接到SQL DSN和连接到Microsoft Access DSN的区别。
创建ADO数据库应用程序

每一个ADO对象都具有一组属性。通过修改这
些属性值,就可以自定义数据访问操作。ADO 属性可以分为内置属性和动态属性。 集合指的是一组相似的对象,这组对象属于另 一个对象。 在应用程序中,还可以使用一些方法来实现 ADO技术。
可以通过两种方法创建ADO应用程序,一种是使用 数据控件,另一种是使用数据绑定对话框。 数据控件包括AD并获得行集合。数据绑定控 件和ADO数据控件连在一起,它显示从数据库中获 得的记录集。 ADO数据控件是一种图形控件,可以帮助你用最少 的代码开发应用程序,我们可以使用ADO数据控件 快速地连接到某个数据库并获得有关的记录信息。 ADO数据控件使数据提供者应用程序和数据绑定控 件之间建立了一种连接。数据绑定控件可以是任何 具有Data Source属性的Windows控件。
Creare applicazioni di database di ADO
ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API) 用以实现访问关系或非关系数据库中的数据。例如,如果您希望编写应用程序从DB2或 Oracle数据库中向网页提供数据,可以将ADO程序包括在作为活动服务器页(ASP)的 HTML文件中。当用户从网站请求网页时,返回的网页也包括了数据中的相应数据,这 些是由于使用了ADO代码的结果。 ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建 一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。 为实现这一目标,微软在数据库和微软的OLE DB中提供了一种“桥”程序,这种程序 能够提供对数据库的连接。 开发人员在使用ADO时,其实就是在使用OLE DB,不过 OLE DB更加接近底层。ADO的一项属性-远程数据服务,支持“数据仓库”ActiveX 组件 以及高效的客户端缓存。作为ActiveX的一部分,ADO也是COM组件的一部分。ADO是由 早期的微软数据接口——远程数据对象RDO演化而来的。RDO同微软的ODBC一同连接关 系数据库,不过不能连接非关系数据库。 ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。对那些熟悉 RDO的程序员来说,你可以把OLE DB比作是ODBC驱动程序。如同RDO对象是ODBC驱动 程序接口一样,ADO对象是OLE DB的接口;如同不同的数据库系统需要它们自己的 ODBC驱动程序一样,不同的数据源要求它们自己的OLE DB提供者(OLE DB provider)。 但微软正积极推广该技术,并打算用OLE DB取代ODBC。 ADO向VC程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存 占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略 小,大约是DAO3.5的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和 RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以 有多个,独立的"Record set"对象来使用它。ADO针对客户/服务器以及WEB应用程序作 了优化。
使用ADO操作数据库

使用ADO操作数据库ADO (ActiveX Data Objects) 是一种用于访问数据库的编程技术,它是微软开发的一种组件对象模型(COM)。
ADO 提供了一种统一的方法来访问各种类型的数据源,如关系数据库、Excel 表格、文本文件等。
通过使用 ADO,开发人员可以简化数据库操作,并提高代码的可重复性和可维护性。
ADO 可以在许多编程环境中使用,如 Visual Basic、ASP、C++等,并且可以与不同的数据库进行交互,如 SQL Server、Oracle、MySQL等。
ADO 使用了一种层次化的模型来表示数据库,即连接、命令、记录集和字段。
下面将详细介绍如何使用 ADO 进行数据库操作。
首先,我们需要建立与数据库的连接。
在 ADO 中,可以使用Connection 对象来实现。
连接字符串是连接到数据库所需的关键信息。
例如,在连接到 SQL Server 数据库时,连接字符串通常包含服务器名称、数据库名称、用户名和密码等信息。
以下是一个示例连接字符串的格式:```Provider=SQLOLEDB;Data Source=ServerName;InitialCatalog=DatabaseName;User ID=UserName;Password=Password;```接下来,使用 Connection 对象打开与数据库的连接:```vbDim conn As New ADODB.Connectionconn.Open "连接字符串"``````vbcmd.ActiveConnection = conn```在执行命令之前,我们需要创建一个 Recordset 对象来存储查询结果。
Recordset 对象可以看作是一个二维表,其中包含了从数据库中返回的数据。
以下是创建 Recordset 对象的代码:```vbDim rs As New ADODB.Recordsetrs.Open cmd, , adOpenStatic, adLockReadOnly```在获取了数据库查询结果后,我们可以使用 rs 对象来访问这些数据。
使用ADONET和XML开发数据库应用程序10

Ver. 1.0
第 10章
幻灯片2(共31张)
使用 和 XML开发数据库应用程序
事务的属性 对于一个成功提交到数据库的事务,它应具有以下四种属性:
原子性
表明执行了所有的修改或没有执行任何修 改
一致性
表明在事务成功完成后数据处于一致的状 态来维护数据的完整性
孤立性
表明一个事务所做的任何数据修改必须与 其他事务所做的修改隔离开来
执行本地事务(续) 让我们了解如何创建本地事务。
创建一个数据源连接。 string connectString = "Initial Catalog=AdventureWorks; Data Source=SQLSERVER01; User id=sa;Password=niit#1234"; SqlConnection cn = new SqlConnection(); cn.Open(); cn = connectString; SqlTransaction tran = null;
Nonrepeatable read
Phantom read
Ver. 1.0
第 10章
幻灯片20(共31张)
使用 和 XML开发数据库应用程序
指定事务的隔离级别(续) 事务的各种类型的隔离级别如下所示:
读取未提交的 读取带有锁定的提交的 读取带有快照的提交的 可重复读取 快照 可序列化
System.Data.OleDblClient.OleDbTransaction
System.Data.Odbc.OdbcTransaction
System.Data.OracleClient.OracleTransaction
Ver. 1.0
ADO数据访问组件

TADOQuery组件基本方法
• • • • • • • • • • • • • • •
1、基本编辑方法: Insert 插入一条记录 Delete 删除一条记录 Edit 使当前记录可编辑 Post 数据变动提交到数据库 比如,要给ADOQuery1中的某个字段赋值,可用如下代码: with ADOQuery1 do begin if not active then active:=true; Edit; Fieldbyname(‘ProductID’).asstring:=’1234’; Post; end; 注意在赋值之前要用Edit使当前记录处于可编辑状态;而在用Edit 指令前用Active • 判断ADOQuery1是否已打开也是一个好习惯。
指定SQL语句
• 通过TADOQurey组件的SQL属性可以设计各种的SQL语句,在该 属性中不仅可以使用数据查询语句,而且还可以使用各种标准的 数据结构化语句,如:DELETE、INSERT和UPDATE等。 • 在设计期,通过激活对象观察2S中的SQL属性编辑器采指定SQL 语句;在运行期, • 白于SQL属性是一个字符串列表对象,可以通过属性和方法给 SQL赋值。 • 下面是给SQL属性赋值的通常做法。 • with ADOQueryl do • begin • with SQL dO begin • Add(,SELECT Company, State,); • Add(’FROM CUSTOMER,); • Add(’ORDER BY Company,); • end;
4、取消批处理更新
• 调用CancelBatch方法将取消所有未决的数据变化。具 体讲,是从最近一次调用CancelBatch或UpdateBatch方 法以来所做的一切变化。 和UpdateBatch方法一样, CancelBatch可以带参数也可以不带参数,作为参数的 UpdateBatchOptions属性,其值是可选的。当不带参数 时,CancelBatch取消所有未决的更新。使用方法是: • ADOQuery1.CancelBatch;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图10-4 工程创建向导
COM服务器类型。
单击工程创建向导“New”窗口的“OK”按钮,
COM AppWizard – Step 1 of 1”窗口,如图10-5所示,开始创建ADOAccessor
工程的第一步是选择组件服务器的类型。
组件服务器通常有三种类型:动态Dynamic Link Library,DLL)、可执行(Excutable)EXE和服务(Service
这里我们选择第一种,即动态链接库(缺省设置)。
TL COM AppWizard – Step 1 of 1”窗口里,点击“Finish”按钮,进入下一步。
图10-5 选择COM服务器类型
弹出的工程新建信息“New Project Information”对话框显示了工程创建信息,如
图10-6 工程创建信息
对象库的支持
ADO,我们需要将ADO库引入工程。
操作系统都提供了
的形式存放的,在进行ADO编程时,首先要将这个库引入工程。
ADO库引入ADOAccessor工程。
"E:\Program Files\Common Files\System\ado\msado15.dll" no_namespace
可以将这段代码加到工程的stdafx.h里,也可以加到工程的ADODemo.h
时候要注意下面的问题:
必须先在系统里查找msado15.dll文件的路径。
由于在不同的系统安装时,这个路径可能不同,不过通常该文件都在系统的“Program Files\Common Files\System\ado
我们在本实例里使用的是ADO的1.5版本,也许你的操作系统不支持
版的,或者是2.0版本,这时需要将这个库文件名称改为相应的文件名即可。
图10-7 “ATL Object Wizard”对话框
TL Object Wizard”对话框的“Category”列表里选择“Objects 列表里选择“Simple Object”项,然后单击“Next”按钮,
属性”对话框,如图10-8所示。
图10-8 “ATL Object Wizard 属性”对话框
Object Wizard 属性”对话框的“C++”组的“Short Name ,其它编辑区的内容自动添加进去,如图10-9所示。
10-9 在“ATL Object Wizard 属性”对话框里输入“ADOTier”对象名称TL Object Wizard 属性”对话框里单击“确定”按钮,VC++就在
”节点左边的“IADOTier”节点的弹出菜单
图10-11 “Add Method to Interface”对话框
Add Method to Interface”对话框的“Method Name”编辑区里输入要添加的方
Parameters”编辑区里输入方法的参数。
例如输入“Open”
BSTR source, [in] BSTR user, [in] BSTR pwd”参数,“[in]”关键字表示参数为输入类型,表示参数为输出类型,这时的“Add Method to Interface
图10-12 输入Open方法的“Add Method to Interface”对话框
Add Method to Interface”对话框里单击“OK”按钮,完成方法的添加。
ADOTier.h文件里增加了方法声明的代码:
STDMETHOD(Open)(/*[in]*/ BSTR source, /*[in]*/ BSTR user, /*[in]*/ BSTR pwd);
ADOTier.cpp文件里增加了方法实现的空函数体,代码如下:
STDMETHODIMP CADOTier::Open(BSTR source, BSTR user, BSTR pwd)
”节点左边的
“IADOTier”节点的弹出菜单
Add Property”项,开始“添加属性”操作,
图10-14 “Add Property to Interface”对话框
Add Property to Interface”对话框的“Property Type”编辑区里输入要添加的
Property Name”编辑区里输入属性的名称,在“
区里输入属性获取或者设置函数的参数。
例如选择V ARIANT数据类型,输入“
ARIANT idx”参数,确认Get和Put两个属性方法都选中,
”对话框如图10-15所示。
10-15 输入Field属性的“Add Property to Interface”对话框
Add Property to Interface”对话框中单击“OK”按钮,完成对象属性的添加。
文件里增加了属性声明的代码:
STDMETHOD(get_Field)(/*[in]*/ V ARIANT idx, /*[out, retval]*/ V ARIANT *pV
STDMETHOD(put_Field)(/*[in]*/ V ARIANT idx, /*[in]*/ V ARIANT newV
图10-16 客户程序工程创建向导
选择应用程序的框架类型。
单击“工程创建向导”窗口的“OK”按钮,开始创建工程。
创建ADOEXTest工程的第一步是选择应用程序的框架类型。
在本工程
Daolog based”,保持资源的语言类型为“中文”,单击“Finish”按钮,
Project Information”对话框,如图10-17所示。
图10-17 工程创建信息
图10-18 设计完成的客户程序界面
图10-19 运行的客户测试程序
该客户应用程序成功地通过ADOTier组件,完成了从SQL Server 7.0。