开发者社区> double2li> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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 函数来保存刚才的修改。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Ninject简介
1.为什么要用Ninject? Ninject是一个IOC容器用来解决程序中组件的耦合问题,它的目的在于做到最少配置。其他的的IOC工具过于依赖配置文件,需要使用assembly-qualified名称来进行定义,庸长且复杂常常因为打错字而破坏程序。
452 0
DAO在MFC中的应用实例 .
本文介绍使用MFC DAO访问数据库的一个实例,其中实例来源于网络。    实例同样实现了对数据库的基本操作:添加、修改、删除和遍历。与ODBC实例中不同的是,ODBC使用过程中添加了一个从CRecordset派生而来的CBook类,负责成员数据与数据表字段的关联,而本实例则是直接使用CDaoRecordset类。
663 0
一起谈.NET技术,Nhibernate入门与demo
  本篇文章阅读对象是:Nhibernate初学者!如果你是Nhibernate的研究者或者已经很熟练的运用Nhibernate请不吝赐教,对本文不足之处进行指教。   带着问题去学习!学完这些后,希望你能回答下面几个问题:   1、Nhibernate是什么?   2、Nhibernate能做什么?带给我们的什么?   3、怎么搭建Nhibernate?   4、怎么使用Nhibernate?   好,我们就带着这几个问题开始我们的Nhibernate的旅程。
822 0
在Entity“.NET研究” Framework 4中映射现有实体类(POCO)
  Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架。   Entity Framework的主要特点:   1. 支持多种数据库(Microsoft SQL Server, Oracle, and DB2);   2. 强劲的映射引擎,能很好地支持存储过程;   3. 提供Visual Studio集成工具,进行可视化操作;   4. 能够与ASP.NET, WPF, WCF, WCF Data Services进行很好的集成。
747 0
一起谈.NET技术,在Entity Framework 4中映射现有实体类(POCO)
  Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架。   Entity Framework的主要特点:   1. 支持多种数据库(Microsoft SQL Server, Oracle, and DB2);   2. 强劲的映射引擎,能很好地支持存储过程;   3. 提供Visual Studio集成工具,进行可视化操作;   4. 能够与ASP.NET, WPF, WCF, WCF Data Services进行很好的集成。
725 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载