第10章 开发ADO数据库组件
- 格式:doc
- 大小:457.50 KB
- 文档页数:29
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全称为: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-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所示。
使用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 对象来访问这些数据。
ADO数据库编程(1)Connection对象(链接)Connection对象代表应用程序与数据源的一个连接,ADO的Connection对象封装了OLE DB的数据源对象(Data Source)和会话对象(Session)。
Connection对象是ADO 的基本对象之一,它独立于所有其他的对象。
在访问数据库时。
首先建立一个Connection对象,通过它建立到数据库的连接(2)Command(命令)对象Command对象代表一个命令,可以通过该对象的方针对数据源有关操作,比如查询,修改等。
Command(命令)对象封装了OLE DB的命令对象(Command)。
利用该对象可以执行不同种类的命令,可以使用Command对象执行查询并返回Recordset对象中的记录,也可以执行不返回记录集的命令,还可以执行存储过程等。
(3)Recordset(记录集)对象Recordset对象封装了OLE DB 的行集对象(Rowset)。
Recordset对象代表一个表的记录集或者查询命令执行的结果,在记录集中,总是有一个当前的记录。
记录集是ADO噶unlishujude基本对象,所有的Recordset对象都按照行列方式的表状结构进行管理,每一行对应一个记录(Record),每一列对应一个域(Field)。
(4)Field(域)对象每个Field对象对应于Recordset对象中的一列。
Recordset对象中包含了一个用于处理记录集中各列的域对象集合(Fields)。
在记录集返回的每一列中,这个域的集合中都有一个相应的域对象与此列相应,每个域对象中封装了记录集对象的一列。
使用Field对象的集合,方法和属性可以获得字段名,字段数据以及字段的其他基本特征。
域对象只能在记录集对象访问,不能独立存在。
2 数据类型转换ADO是基于COM的技术,COM中使用的数据类型和C++中是不同的。
在用ADO编程时,就需要考虑其数据类型和C++数据类型之间的转换的问题。
一、ADO模型常用三个对象连接对象Connection通过连接可以从应用程序中访问数据源。
连接时必须指定要连接的数据源以及连接所使用的用户名和用户口令。
命令对象Command可以通过已建立的连接发出命令,从而对数据源进行指定操作。
一般情况下,命令可以在数据源中添加、修改或删除数据,也可以检索数据。
记录集对象Recordset查询命令可以将查询结果储存在本地,这些数据以行为单位,返回数据的集合被称为记录集ADO 模型中常用的对象为Connection 对象、Command 对象、Recordset 对象。
在使用这3 个对象的时候,需要定义与之对应的3 个智能指针,分别为_ConnectionPtr 、_CommandPtr 和_RecordsetPtr。
然后调用它们的CreateInstance 方法实例化,从而创建这3 个对象的实例。
二、_bstr_t 和_variant_t 类在利用ADO 进行数据库开发的时候,_bstr_t 和_variant_t 类很有用,省去了许多BSTR和VARIANT 类型转换的麻烦。
COM 编程不使用CString 类,因为COM 必须设计成跨平台,它需要一种更普遍的方法来处理字符串和其他数据类型,这也是VARIANT 变量数据类型的来历。
BSTR 类型也是如此,用来处理COM 中的字符串。
VARIANT 是一个巨大的union 联合体,几乎包含了所有的数据类型,简单来说,_variant_t 是一个类,封装了VARIANT 的数据类型,并允许进行强制类型转换。
同样,_bstr_t 是对BSTR 进行了封装的类。
有了这两个类,开发ADO程序将得到很大的方便。
在后面的例子中,将介绍它们的使用方法。
三、1。
当初始化COM 环境后,就可以创建与数据库的连接。
建立数据库的连接需要使用连接对象Connection。
2。
利用ADO 查询数据库的记录,需要使用记录集对象Recordset。
VB中用ADO操作数据库ADO(ActiveX Data Objects)是一种在Visual Basic中用于数据库访问的技术。
它是一组面向对象的组件,可以让开发者直接从应用程序中连接到数据库,并执行各种数据库操作,如查询、插入、更新和删除。
ADO提供了一个统一的编程模型,可以与多种数据库进行交互,无论是局域网中的Access数据库还是企业级的SQL Server数据库。
在VB中使用ADO操作数据库,通常需要以下步骤:1. 引用ADO库:在VB的项目中,需要引用Microsoft ActiveXData Objects库。
可以在“项目”->“引用”中找到并选中“Microsoft ActiveX Data Objects Library”。
2. 创建连接:在VB代码中,首先需要创建一个Connection对象,用于连接到数据库。
可以使用ADODB.Connection类来创建连接对象,例如:Dim conn As ADODB.ConnectionSet conn = New ADODB.Connection3. 连接数据库:使用Connection对象的Open方法,传入数据库连接字符串及相关参数,来连接到数据库。
连接字符串可以指定数据库类型、主机名、用户名、密码等信息。
例如:conn.ConnectionString = "Provider=SQLOLEDB;DataSource=ServerName;Initial Catalog=DatabaseName;UserID=UserName;Password=Password"conn.Open4. 执行SQL语句:使用Connection对象的Execute方法,传入SQL 语句来执行数据库操作。
例如:conn.Execute "INSERT INTO TableName (Column1, Column2) VALUES ('Value1', 'Value2')"5. 获取查询结果:对于查询操作,可以使用Recordset对象来获取查询结果。
ADO开发数据库应用程序的7个步骤:1.用#import指令引入ADO类型库将工作区Workspace切换到FileView项,在FileView中的Header Files里找到stdafx.h,在stdafx.h文件的末尾加入如下语句://用#import指令引入ADO类型库#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")库的初始化用AfxOleInit()来初始化COM库// COM库的初始化if (!AfxOleInit()){AfxMessageBox("初始化COM库失败");return FALSE;}3.创建Connection对象并连接数据库(1)定义Connection变量。
定义一个指向Connection对象的指针:_ConnectionPtr m_pConnection。
(2)创建Connection对象,代码如下://创建Connection对象try{m_pConnection.CreateInstance("ADODB.Connection"); //创建连接对象实例_bstr_t strConnect="Provider=SQLOLEDB.1;Database=MUJUCJ;Persist Security Info=True;Data Source=PC-20120814JZJ";m_pConnection->Open(strConnect,"sa","",adModeUnknown); //连接字符串,这里Query是数据库名,127.0.0.1代表本地主机//打开数据库}catch (_com_error e) //捕捉错误{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息//弹出错误}//Connection对象创建完毕4.执行SQL命令取得结果记录集为了取得结果记录集,我们定义一个指向Recordset对象的指针:_RecordsetPtr m_pRecordset;SQL命令的执行可以采用下面3种形式。
SQL数据库习题及答案1.模型中,同一个关系中的不同属性,其属性名__B__。
A. 可以相同 B. 不能相同C. 可以相同,但数据类型不同 D. 必须相同2.数据库系统由数据库、A组成。
A.DBMS、应用程序、支持数据库运行的软硬件环境和DBA3.计算机数据管理技术的发展可以划分为三个阶段,在某个阶段数据是以文件形式长期存储在辅助存储器中,程序和数据之间具有相对的独立性,数据不再属于某个特定的应用程序,数据可以重复使用,该阶段是B。
B.文件管理阶段C.数据库管理阶段D.信息管理系统阶段4.在数据库的三级体系结构中,数据库的模式对应于数据库的D B.内部视图C.存储视图D.概念视图5.在数据库的三级体系结构中,数据的逻辑独立性是通过D来实现的。
D.外模式-模式映射6.三层C/S结构包括客户机、应用服务器和数据库服务器三部分。
7.DDL是指数据描述语言,DML是指数据操纵-查询语言,DBMS是指数据库管理系统,DD是指数据字典。
8.在SPARC结构中,定义的数据库三层结构分别是外模式、模式和内模式。
9.数据的独立性包括物理独立性和逻辑独立性两个方面。
10.实体集之间的联系有三种,分别是一对一的联系,一对多的联系,多对多的联系11.试说明数据管理的数据库阶段的主要特点。
答:数据库管理的数据库阶段主要特点是:1、数据共享性;2、具有较高的数据与程序的独立性;3、便于对数据实行集中统一的控制。
12.试说明DBMS的组成。
答:DBMS是由一系列软件构成的复杂系统,一般来说DBMS由下列三类软件组成:语言系统;控制数据库运行的程序;数据库维护程序;13.数据模型的三要素是什么?答:数据模型的三要素是数据结构、数据操作、数据的约束条件。
14.关系模型有什么特点?答:关系模型有什么特点:1、关系模型与非关系模型不同,它是建立在严格的数学概念基础上的;2、关系模型的概念单一,无论实体或实体之间的联系都用关系表示3、存取路径对用户透明。
图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。