DAO简介(MFC) .

简介: 1 DAO简介        DAO(数据访问对象)是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。

1 DAO简介

       DAO(数据访问对象)是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。在VC中,它是从Visual C++4.0版开始引入的。

 

2 DAO和ODBC的比较

2.1 相似点

MFC的DAO类和ODBC类有很多相似之处,主要有两点:

1) 都支持对各种ODBC数据源的访问。

2) 提供了功能相似的MFC类。例如DAO的CDaoDatabase类对应于ODBC的CDatabase类,DAO的CDaoRecordset类对应于ODBC的CRecordset类等。这些类所提供的程序函数大部分也相同。

2.2 不同点

尽管两者非常相似,但访问数据库的机制完全不同。ODBC的工作依赖于数据库制造商提供的驱动程序,而DAO直接利用Microsoft Jet引擎提供的数据库访问对象集进行工作。

 

3 DAO主要类

      CDaoDatabase、CDaoRecordset、 CDaoTableDefInfo、CDaoFieldInfo、COleVariant 是使用MFC进行DAO编程的最基本和最常用的类。

使用MFC进行DAO编程,首先要为每一个打开的数据库文件提供一个数据库对象──CDaoDatabase,由这个对象管理数据库的连接。然生成记录集对象──CDaoRecordset,通过它来进行查询、操作、更新等等的工作。如果需要在程序中管理数据库的结构,则需要使用DAO当中的表结构信息对象CDaoTableInfo及字段定义对象 CDaoFieldInfo来进行获得或者改变数据库表结构的工作。

3.1 CDaoDatabase

    类CDaoDatabase代表了一个数据库连接。使用它可以操纵数据库中的数据。在一个给定工作区(由CDaoWorspace对象代表)中,同时可以有多个活动的CDaoDatabase对象。工作区维护了一组开放数据库对象——数据库连接。

      MFC DAO数据库类与那些基于ODBC的MFC数据库类是不同的。所有的DAO数据库类的名字都有CDao前缀。类CDaoDatabase提供了一个类似于ODBC类CDabase的接口。二者主要的不同在于:CDatabse是通过ODBC和ODBC驱动程序存取数据库的,而CDaoDatabase则是通过数据存取对象(Data Acess Object,DAO)存取数据库的。DAO基于Microsoft Jet数据库引擎。一般说来,基于DAO的MFC类比基于ODBC的类处理能力更强。基于DAO的类可以通过ODBC驱动也可以经由自己的数据库引擎存取数据。基于DAO的类也支持数据定义操作(DDL),比如不用直接调用DAO而通过类建立表。
     建立一个新的Microft Jet数据库(.MDB),要构造一个CDaoDatabase对象并且调用它的成员函数Create。 在调用Create之后不要再调用Open。打开一个现有的数据库,要构造一个CDaoDatabase对象并且调用它的成员函数Open。上面的这些方法都把DAO数据库对象添加到工作区的Databases集合中,并在数据上建立一个连接。以后需要构造CDaoRecordset,CDaoTableDef或CDaoQueryDef来操纵连接上的数据库,要向它们的构造函数传送CDaoDatabase对象的指针。使用完连接之后,要调用成员函数Close并撤消CDaoDatabase对象。Close会关闭所有没有关闭的记录集。

3.2 CDaoRecordset

     一个CDaoRecordset对象表示从数据源中选择的一组记录。作为“记录集”,CDaoRecordset对象在以下三种窗体中有效:

3.2.1 表型记录集表示一个基本表,可以用它从单个数据库表中检查、添加、改变或删除记录。

3.2.2 动态集型记录是一个查询的结果,可以包含可更新的记录。这个数据集是一组记录,可以用它从一个或多个基本数据库表中检查、添加、改变或删除记录。动态集型记录集包含来自一个数据库中一个或多个表的字段。

3.2.3 快照型记录集是一组记录的一个静态拷贝,可以用它查找数据或生成报表。这些记录集可以包含来自一个数据库中一个或多个表的字段,不过不可更新。

3.3 CDaoTableDefInfo

COleVariant 这个类封装了WIN32提供的VARIANT这个结构以及对它的操作。这个类当中可以存储多种类型的数据。需要注意的是这种包容能力是通过C语言当中的UNION提供的,就是说一个COleVariant 对象只能保存一种类型的数据。我们先把字段的值装入OLE变体对象,再使用这个变体对象对记录中的字段进行赋值。VT_BSTRT参数的作用是在生成OLE变体对象的时候指示将要封入的数据的类型为字符串。当对所有的字段都结束赋值后,调用Update 函数来保存刚才的修改。

目录
相关文章
|
API C++ Windows
MFC编程特点与MFC类简介
一、Window编程的方法主要有: 传统编写法(利用API函数)和交互式方法(利用MFC类库)两种。   (1)、利用Windows API函数编写Windows应用程序需要手工编写很多的代码,程序员需要对Windows的编程原理有很深刻的认识。
3156 0
|
数据库连接 数据库
DAO在MFC中的应用实例 .
本文介绍使用MFC DAO访问数据库的一个实例,其中实例来源于网络。    实例同样实现了对数据库的基本操作:添加、修改、删除和遍历。与ODBC实例中不同的是,ODBC使用过程中添加了一个从CRecordset派生而来的CBook类,负责成员数据与数据表字段的关联,而本实例则是直接使用CDaoRecordset类。
975 0
|
程序员 vr&ar 网络架构
MFC深入浅出-CObject类
CObject类   CObject 是大多数MFC类的根类或基类。CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等。MFC从CObject派生出许多类,具备其中的一个或者多个特性。
1248 0
|
C#
56【WinForm】WinForm创建类库项目,并同时在项目中调用类库文件C#
【WinForm】WinForm创建类库项目,并同时在项目中调用类库文件C#
341 0
|
Java
java接口简介
1.1接口简介 接口,在java中是一种引用数据类型,里面主要有常量、抽象方法(jdk及以前)、默认方法和静态方法(jdk8)、和私有方法(jdk9)。接口是一系列方法的声明,是一些方法的特征集合,一个接口只要方法的特征而没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现类的方法具有不同的功能。
144 0
|
设计模式
Java---设计模块(设计模块的简介及最简单的俩个单例代码加测试)
Java---设计模块(设计模块的简介及最简单的俩个单例代码加测试)
118 0
|
消息中间件 程序员 Windows
MFC深入浅出-MFC对象的创建
MFC对象的创建   前面几章介绍了 MFC的核心概念和思想,即介绍了MFC对Windows对象的封装方法和特点;MFC对象的动态创建、序列化;MFC消息映射机制。   现在,考查 MFC的应用程序结构体系,即以文档-视为核心的编程模式。
1295 0