CDaoDatabase

CObject
 └CDaoDatabase

类CDaoDatabase代表了一个数据库连接。使用它可以操纵数据库中的数据。有关支持的数据库格式,请参阅成员函数GetName。在一个给定工作区(由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而通过类建立表。

用法
在创建记录集时,可以隐式地建立数据库对象,也可以显式地创建数据库对象。要显式地通过CDaoDatabase利用现有的数据库,只需:
·构造一个CDaoDatabase对象,向打开的CDaoWorkspace对象传送它的指针。
·或者不指定工作区而构造一个CDaoDatabase对象(MFC会建立一个临时的工作区)。
建立一个新的Microft Jet数据库(.MDB),要构造一个CDaoDatabase对象并且调用它的成员函数Create。 在调用Create之后不要再调用Open。
打开一个现有的数据库,要构造一个CDaoDatabase对象并且调用它的成员函数Open。
上面的这些方法都把DAO数据库对象添加到工作区的Databases集合中,并在数据上建立一个连接。以后需要构造CDaoRecordset,CDaoTableDef或CDaoQueryDef来操纵连接上的数据库,要向它们的构造函数传送CDaoDatabase对象的指针。使用完连接之后,要调用成员函数Close并撤消CDaoDatabase对象。Close会关闭所有没有关闭的记录集。

事务
在工作区级支持数据库的事务处理。参阅类CDaoWorkspace的成员函数BeginTrans,CommuitTrans和Rollback。有关更详细的信息,请参阅联机文档“Visual C++程序员指南”中的“DaoWorkspace:管理事务”。

ODBC连接
建议在使用ODBC数据源时把外部表连到一个Microsoft Jet数据库(.MDDB)。有关更详细的信息,请参阅联机文档“Visual C++程序员指南”中的“DAO扩展:处理外部数据源”。

收集
每个数据库都拥有自己的表定义、查询定义、记录集和关系对象的收集。类CDaoDatabase提供了操纵这些对象的成员函数。
注意:
上述对象存储在DAO中,而不是存储在ODBC对象中。MFC提供了支持表定义、查询定义和记录集对象的类,但没有支持关系对象的类。
要了解有关CDaoDatabase的更详细的信息,请参阅联机文档“Visual C++程序员指南”中的“DAO 数据库”。
#include <afxdao.h>

请参阅:
CDaoWorkspace, CDaoRecordset, CDaoTableDef, CDaoQueryDef, CDatabase, CDaoException

CDaoDatabase类的成员

数据成员
m_pWorkspace包含了数据库并定义了事务空间的CDaoWorkspace对象的指针
m_pDAODatabase所属的DAO数据库对象的指针

构造函数
CDaoDatabase构造一个CDaoDatabase对象。调用Open可以与数据库建立连接

属性
CanTransact如果数据库支持事务,则返回非零值
CanUpdate如果CDaoDatabase对象是可更新的,返回非零值
GetConnect返回连接数据库的连接参数(连接字符串)。用于ODBC
GetName返回当前使用的数据库的名字
GetQueryTimeout返回对数据库查询操作设置的超时时间(以秒为单位)。影响随后的打开、增加、更新和编辑操作以及ODBC数据源上的其它操作(如Execute调用)
GetRecordsAffected返回最后一次更新、编辑、增加操作或Execute调用所影响的记录数
GetVersion返回与数据库相关的数据库引擎的版本
IsOpen如果CDaoDatabase对象正连接到数据库上,则返回非零值
SetQueryTimeout设置数据库查询操作的超时时间(以秒为单位)。仅用于ODBC数据源。影响随后所有的打开、添加、更新和删除操作

操作
Close关闭数据库连接。
Create创建下面的DAO数据库对象并初始化CDaoDatabase对象
CreateRelation在数据库中的表之间定义一个新的联系
DeleteQueryDef删除数据库的QueryDefs集合中的一个查询定义对象
DeleteRelation删除数据库中表之间的一个联系
DeleteTableDef删除数据库中某个表定义。将删除表定义和表中的数据
Execute执行一个查询。为查询调用Execute可以返回结果,在出错时会产生异常
GetQueryDefCount返回数据库中查询的个数
GetQueryDefInfo返回数据库中指定查询的定义信息
GetRelationCount返回数据库中表之间定义的联系的个数
GetRelationInfo返回数据库中指定的表间联系的信息
GetTableDefCount返回数据库中表的个数
GetTableDefInfo返回数据库中指定表的信息
Open建立一个数据库连接