DAO简介(MFC)

MFC DAO数据库编程  10.3 MFC DAO数据库编程DAO(Database Access Object,数据访问对象)使用Microsoft Jet数据库引擎来访问数据库。MFC DAO封装了DAO的大部分功能,可以很方便地使用Microsoft Jet引擎访问数据库。本节就来介绍如何使用MFC DAO开发数据库应用程序。10.3.1 MFC DAO概述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 函数来保存刚才的修改。

 

 

 

 

vc6.0使用DAO访问access2000的问题 感觉DAO已经是一种比较旧的数据库技术,但我的一个同学还在使用VC6.0跟mfc的DAO类来操作access2000,并遇到了一个问题,就是程序运行时提示说“无法识别数据库格式”。查了一下原因,应该是这样的:VC6.0里面的mfc默认使用的是DAO3.5,而DAO3.5使用的数据库引擎是Jet3.5,Jet3.5操作access97是没有问题的,而操作access2000却不行,因为acces 阅读详情

相关推荐

深入理解MFC数据库编程:ODBC与DAO技术

本文深入探讨了MFC(Microsoft Foundation Classes)在数据库编程中的应用,特别是ODBC(Open Database Connectivity)和DAO(Data Access Objects)API的使用。通过实例分析,展示了如何利用MFC的文档/视图架构与ODBC和DAO包装类来创建一个地址簿应用程序,包括获取数据、更新应用程序变量、以及如何通过AppWizard简化开发过程。

weixin_36019375的博客 359

MFC DAO编程总结

一半情况下,并不需要直接使用CDaoDatabase对象,因为CDaoRecordSet对象可以是实现大多数功能,但是,在进行事务(Transaction)处理时,CDaoDatabase就起到关键作用。使用CDaoDatabase构造一个对象,并调用Open成员函数打开数据源的连接,接着构造CDaoRecordSet对象以操作连接的数据源,并向CDaoDatabase对象传递记录集构造程序指针。注意:MFC DAO仅用来支持Access数据库,应用范围相对固定。

jiandaxiami的博客 289

MFC数据库编程:ODBC和DAO的封装与实现

本章详细介绍了如何使用MFC提供的ODBC和DAO API封装类来创建一个通讯录应用程序。通过实例演示了如何将数据绑定到应用程序,并使用MFC AppWizard创建数据绑定。本章内容涵盖了从设置数据源、创建数据支持到利用MFC的文档/视图架构实现数据与视图的绑定。

weixin_36019375的博客 470

MFC中使用DAO来打开数据库

最近在学习MFC中数据库的使用,在之前写过一篇使用使用Access技术连接数据库。在这个项目中打开的是.mdb数据库文件。ODBC是数据库的连接接口,他不管连接是何种数据库,在程序运行过程中都会提供选定数据库的引擎。点击打开MDB文件后,选择要打开的MDB文件,然后显示数据库中的表,如图所示。这个例子的思路是:在文档类中打开数据库,并读取其中的数据,然后保存起来。这个例子中其中CDAOTestView继承于一个自定义的CRowView,这个CRowView的试图类是一个纯虚类,负责数据的处理和显示。

weixin_45144862的博客 1294

全面掌握MFC在C++中的应用与技巧

本文还有配套的精品资源,点击获取 简介:《深入浅出MFC(C++)》旨在提供对微软基础类库(MFC)的全面解析,帮助开发者高效开发Windows应用程序。书中详尽介绍了MFC的基础结构、框架类、消息处理机制、文档/视图架构、DLL支持、数据库编程、国际化、异常处理和网络编程等关键知识点,致力于提升开发者在这些领域的专业技能。 1. MFC基本概念与初始化 1...

weixin_35705784的博客 2693

MFC DAO编程函数一览

这是我自己总结的MFC DAO编程中,CDaoWorkspace CDaoDatabase CDaoTableDef CDaoQueryDef CDaoRecordset五个类的成员函数,比较全。

Dao层(通用,无需额外jar包,只需导入数据库驱动)

数据库的连接(.properties属性配置文件) 1)想获取连接的话需要在src下创建jdbc.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test user=root pwd=abc123 2)获取数据库的连接 /* * 要想获取数据库的连接: * 1.导入具体数据库的驱...

CallmeMaybe 1297

演示如何用MFC和DAO(数据访问对象)写一个CGI扩展服务器,程序动

演示如何用MFC和DAO(数据访问对象)写一个CGI扩展服务器,程序动态生成一个网页显示数据库中的前三条记录(8KB)

mfc和mysql连接 dao_DAO简介(MFC) .

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

weixin_35064481的博客 294

mfc DAO连接access数据库

mfc DAO连接access数据库 可添加,删除记录!

DAO3.5 支持64位Win7

在 64 位 Win7 系统下安装某些老款建筑预算软件需要部署 DAO,故做了此安装包分享给大家

DAO简介(MFC) .

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

weixin_34149796的博客 162

DAO数据库安装文件

安装软件时,如果数据库缺失可以用它来安装。

DAO and MFC

DAO and MFCThis article describes MFCs implementation of Microsoft Data Access Objects (DAO). Topics covered include: How MFC Encapsulates DAO Mapping of DAO objects to MFC classes

小发猫 1374

告别USB转接:在STM32探索板上用SPI跑通ESP-Hosted,实现Wi-Fi/BLE连接

本文详细介绍了如何在STM32F469I-DISCO开发板上通过SPI接口实现ESP-Hosted方案,为嵌入式设备添加Wi-Fi和蓝牙连接功能。通过硬件配置、协议栈优化和性能测试,展示了这一创新方案的成本效益和开发效率,特别适合资源受限但需要稳定无线连接的嵌入式应用场景。

weixin_34046298的博客 252

ArcGIS基础:点要素分割线要素和提取线要素的交点

第一个实验:【点要素分割线要素】看下原始数据:下图所示,2个红点和一条绿线,用2个点去分割这条线。 找到【数据管理工具】,在找到【要素】,再找到【在点处分割线】,如下图所示。 输入线、点要素,然后在【搜索半径】里输入5米,查看一下结果。 查看结果发现,线段被分割了2段,我们查看一下原因。 发现第2个点与线有一段距离,肯定是大于5米的,所以分割没有成功。可以量测一下距离,重新输入搜索半径。 我们把搜索半径改为200米,勘察结果,被点分割了3段。 接下来使用另外一个工具【在折点处分割线】,如下所示。

yuanYW7556的博客 1万+

SQL Server MFC DAO类和MFC ODBC类

转自:http://www.verybc.com/a/shujuku/20091125/9828.html时间:2009-11-25 00:26来源:作者:点击:347次内容概要:大多数 mfc 开发人员都熟悉开放式数据库连接 (odbc) 数据库类 - 它们早在三年半以前就出现了。在 mfc 4.2 中,对这些类有一些重要的 大多数 mfc 开发都熟悉开放式数据库连接 (odbc) 数据库类 - 它们早在三年半以前就出现了。在 mfc 4.2 中,对这一些类有一些很重要的改进。<br />身为 c++ 开

Nicholas的专栏 QQ1295794532 1129

Shopee商品详情页反爬实战:手把手逆向x-sap-Ri和x-sap-Sec参数(附完整调试过程)

本文详细解析了Shopee商品详情页反爬机制中的x-sap-Ri和x-sap-Sec参数逆向过程。通过JS逆向技术,从环境数据采集到多层哈希运算,完整拆解了这两个关键参数的生成逻辑,并提供了实战技巧和Node.js实现方案,帮助开发者应对Shopee的动态加密挑战。

weixin_33701251的博客 1598

java中dao_java中的Dao类是什么意思?

展开全部DAO(Data Access Object)数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft Jet数据库引擎(由62616964757a686964616fe58685e5aeb931333366303062 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 像直接连接到其他数据库一样,直接连接到 Access ...

weixin_36329071的博客 4321

Qt开发者必看:QTimer::singleShot的5个实战避坑指南(含lambda和多线程案例)

本文为Qt开发者提供了QTimer::singleShot的5个关键实战避坑指南,涵盖lambda捕获、对象生命周期和多线程安全等核心难点。通过对比错误与正确代码示例,深入解析了如何避免悬空指针、确保线程执行上下文正确以及管理定时任务资源,帮助开发者编写更健壮、可靠的延迟执行代码。

stem5的博客 466

uniapp - 如何跟内嵌 web-view 组件内的网页交互,与 web-view 内嵌网页进行双向通信(uniapp 与 webview 网页之间的 “相互“ 传值)提供详细的示例代码及解决方案

uni-app如何实现在H5环境中与web-view中的网页交互通讯uniappuni-app 与 web-view内嵌网页 双向通信 如何跟内嵌web-view交互uniappAPP与webview子页面交互uniappAPP与webview子页面交互关于uni-app 使用 web-view 页面之间互相跳转、通信等问题uniapp的web-view嵌入网页,网页与uniapp通信webview如何与uniapp写的H5页面交互嵌套webview调用uniapp各种API组件实现H5和app通讯和交互

✅ 精选推荐文章 1万+
上一篇: 求职面试中的十二种"高级"错误(转)
下一篇: DAO在MFC中的应用实例
mannhello
博客等级 码龄18年 64粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值