VC++数据库技术系列(三)DAO对象模型组成

来源:互联网 发布:linux系统装在哪个分区 编辑:程序博客网 时间:2024/04/30 07:44

DAO对象模型组成 

DAO对象模型,也就是Data Access Object,它是一个针对Jet引擎的访问操作。所以对于Access数据库来说,使用DAO无疑是最佳首选。而MFC DAO是微软提供的用于访问Microsoft Jet数据库文件(*.mdb)的强有力的数据库开发工具,它通过对DAO的封装,向程序员提供了各种辅助类,从而大大降低了DAO对象使用复杂度。DAO模型通过多个DAO对象构成一个体系结构,在这个结构里,各个DAO对象协同工作。对应MFC DAO的对象如下所示:


CDaoWorkspace

此对象用来管理具有用户名、密码保护的数据库,大部分程序使用默认的工作区。

CDaoDatabase

通过此对象与数据库建立连接。建立连接后,才能对数据库采取进一步的操作。

CDaoRecordset

用来表示从数据源中查询的数据记录集合。

CDaoRecordView

通过一个视图控件来显示数据记录。

CDaoQueryDef

对查询定义的表述,查询定义通常保存于数据库当中。

CDaoTableDef

用来表示一个数据实体表或链接表的定义。

CDaoException

这个对象用来对DAO中产生的异常进行包装。

CDaoFieldExchange

此对象用来对DAO的字段改变的路径提供支持,通常不会直接使用到此对象。

其中CDaoDatabase CDaoRecordset 是两个比较重要的对象,几乎所有的DAO数据库都有这两个对象的身影。其他还定义了一些数据类型的类:ClongBinaryColeCurrencyCOleDateTime ColeVariant。分别用来处理数据二进制对象、货币类型、时间类型及变体类型。

 

同样为了让同学们有个直观的认识,我们同样试图通过DAO来访问学生信息管理系统。我们看看通过DAO访问数据库的大概步骤。重点认识CDaoDatabase CDaoRecordset这两个对象。

首先,同样要建立对数据库的连接,我们通过CdaoDatabase对象来完成该任务。

 

 

这样我们就与数据库classdat.mdb建立了连接,然后我们访问其中的表数据。此时需要用到CDaoRecordset对象

 

 

数据表已经被打开,并被daoRs接收。我们就可以对该表进行访问、修改、删除操作了。

如果要访问字段内容,可通过CDaoRecordset对象的GetFieldValue操作。

如:

 

 

就可以将第二个字段(字段索引从0开始)保存到vValue对象当中。在学生信息管理系统当中,该字段是学生姓名,所以保存的代码如下:

 

 

当要对字段进行修改时,可以通过SetFieldValue操作。

如:

 

就将数据库中的学生姓名字段更新为strStudentName的内容了。

删除操作则直接通过Delete函数。

daoRs.Delete();//这里将删除当前记录。

同样我们要访问前一条记录或后一条记录,可以通过MovePrevMoveNext

至此,你已经可以通过DAO来建立你的简单的数据库软件了。使用DAO操作数据库是不是很简单呢?


9.2.4  DAO 特点

DAO提供了一种通过程序代码创建和操纵数据库的机制。最大特点是对MICROSOFT JET数据库的操作很方便,而且是操作JET数据库时性能最好的技术接口之一。当你需要访问Access数据库时,不妨使用DAO对象模型来进行操作。DAO具有如下几个显著特点。

首先,DAO使用相对比较简单。

我们看到DAO模型中,主要对象包括CDaoWorkspace CDaoDatabase CDaoRecordset三个,一般情况下应用后两个对象已经能完成大部分的工作。对象的操作也比较直观,通过函数名已经能大概知道具有的操作。加上MFC对其的封装,更进一步降低了它的使用难度。

其次,DAO是用来访问Jet引擎的方法,主要用来访问Access数据库。

可以说DAO天生是用来操作Access数据库的,但它并不局限于Access数据库。通过DAO技术可以访问从文本文件到大型后台数据库等多种数据格式。使用ACCESSODBC表添加到一个MDB文件上,我们也可以通过DAO访问提供了ODBC驱动的数据库。

再者,DAO是操作JET数据库时性能最好的技术接口之一。

因为DAO是针对JET数据库来开发的,所以通过它来访问Access数据库具有高效的特点。

最后,因为Microsoft Jet不支持多线程,因此,必须限制调用到应用程序主线程的所有DAO。也就是需要使用者自己负责同步工作。

原创粉丝点击