ADO编程基础

在介绍ADO编程编程之前,对数据库访问技术做一个简要回顾。 

一、数据库访问技术

1. ODBC(Open Database Connectivity),开放数据库互连

ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。ODBC体系架构如图1所示


图1 ODBC体系架构

1. DAO(Data Access Object),数据访问对象

DAO就是一组Microsoft Access/Jet数据库引擎的COM自动化接口。 DAO不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。 

2. RDO(Remote Data Object),远程数据对象

由于RDO直接调用ODBC API(而不是像DAO那样通过Jet引擎),所以,可以为使用关系数据库的应用程序提供更好的性能。

3. OLE DB,对象链接与嵌入数据库

OLE DB在两个方面对ODBC进行了扩展。首先, OLE DB提供了一个数据库编程的COM接口;第二, OLE DB提供了一个可用于关系型和非关系型数据源的接口。 OLE DB的两个基本结构是OLE DB提供程序(Provider)OLE DB用户程序(Consumer)OLE DB体系结构如图2所示 


2 OLE DB 体系结构


1. ADO(ActiveX Data Object),ActiveX数据对象

ADO建立在OLE DB之上,因此访问数据库的灵活性增强了,但是效率会相应有所减慢。ADO是一个OLE DB用户程序。使用ADO的应用程序都要间接地使用OLE DBADO简化了OLE DB,提供了对自动化的支持,使得像VBScript这样的脚本语言也能够使用ADO访问数据库。 

二、ADO编程基础 

ADO(ActiveX Data Object,AxtiveX数据对象)Microsoft 数据库应用程序开发的新接口,是目前在Windows环境中比较流行的客户端数据库编程技术。同时,ADO还是建立在OLE DB底层技术之上的高层数据库访问技术。OLE DB是数据库底层接口,为各种数据源提供了高性能的访问;而ADO则封装了OLE DB所提供的接口,使用户能够编写应用程序以通过OLE DB提供访问和操作数据库服务器中的数据。

ADO的优点在于使用简便、速度快、内存支出少,磁盘遗迹小,同时还具有远程数据服务功能,可以在一次往返过程中实现将数据服务从服务器移动到客户端程序,然后在客户端对数据进行处理并将更新结果返回到服务器。此外,ADO还提供了多种语言支持,除了面向Visual C++外,还提供了面向其他各种开发工具的应用。

ADO对象 

ADO主要有三个对象:

1.Connection对象   ADO连接对象,用于连接数据源,并处理一些事物和命令。在使用ADO操作(访问)数据库前,必须首先创建一个ADO连接对象,然后才能通过该对象打开到数据库的连接。

 

2.Command对象   ADO命令对象,用于执行传递给数据源的命令,主要用于查询数据库,并返回Recordset对象中的记录,以便大量操作,或对数据库结构进行操行。

 

3.Recordset对象   ADO记录集对象,表示基本表,或者表示命令执行结果的记录全集。需要注意的是,Recordset对象的当前记录是集合中的单个记录。采用ADO时,可以使用Recordset对象操作来自提供者(数据源)的数据,也可以使用Recordset对象对数据库中的所有数据进行操作。结构上,所有的Recordset对象均由记录(行)和字段(列)组成。

其他四个对象:

4.Parameter对象   ADO参数对象,代表参数或基于参数化的命令对象的参数信息。主要进行的操作在这些命令中只定义一次,但可以使用参数来改变命令的细节。

5.Field对象       每个Field对象都对应Recordset中的一列。使用Field对象的Value属性可以设置或返回当前记录的数据。

6.Error对象       ADO错误对象

7.Property对象     ADO属性对象

  

ADO接口简介 

ADO技术是基于OLE DB的访问接口,而后者又是基于COM接口的技术,对于这种特殊的关系,MFC并没有提供对ADO操作的支持类,但是通过一些特殊的ADO支持类可以很方便地使用ADO对象,_com_ptr_t就是其中的中一个。

ADO库中包含的三个基本接口为_ConnectionPtr接口,_CommandPtr接口和_RecordsetPtr接口,接下来对它们分别加以简要介绍。 

1._ConnectionPtr接口

该接口返回一个记录集或一个空指针。通常用它来创建一个数据连接,或执行一条不返回任何结果的SQL语句,如一个存储过程。不推荐使用_ConnectionPtr接口返回一个记录集,对于要返回记录的操作通常用_RecordsetPtr来实现,而且使用_ConnectionPtr时要想得到记录数目必须遍历所有记录,但使用_RecordsetPtr 

2. _CommandPtr接口

该接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串.如果只执行一次或几次数据访问操作,后者是比较好的选择.但如果要频繁访问数据库,并要返回很多记录集,那么应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句. 

3._RecordsetPtr接口

该接口是一个记录集对象.与前面两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等._CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtrconnection成员变量,让它自己创建数据连接.如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句.

示例:

1) 创建记录集

_RecordsetPtr   [name]

 

2) 打开记录集

[name]->Open(_variant_t("表名"),     

_variant_t((IDispatch *)m_pConnection,true), adOpenKeyset,

           adLockOptimistic, adCmdTable); 

 

3) 遍历记录集

Move     将记录集指针移动到指定的记录

MoveFirst 将记录集指针移动到第一条记录

MoveLast 将记录集指针移动到最后一条记录

MoveNext 将记录集指针移动到下一条记录

MovePrev 将记录集指针移动到前一条记录

 

4) 访问记录集

有三种方法获得字段值

a.[name]->GetItem(index)->Value

[name]->GetItem(index)->Value

 

b. [name]->GetField()->GetItem(index)->Value

  [name]->GetField()->Item (index)->Value

 

c.[name]-> GetCollect(字段名)

      

***index和取得的值都是_variant_t,必须经过类型转换,转换成我们需要的类型

d.设置字段值

[name]->PutCollect(字段名,新值)

待完善



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法哥2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值