大多数情况下不需要多个工作区,也不需创建明确的工作区对象;在打开数据库和
记录集对象时,它们使用DAO缺省工作区。但是如果需要,可以通过创建额外工作区对象同时运行多个会话。每个工作区对象可以包含它自己的Database收集中的多个打开的
数据库对象。MFC中工作区主要是一个
事务管理器,指定全部在同一个“
事务区”内的一系列打开数据库。
DAO数据库类与基于开放数据库连接(ODBC)的MFC数据库类截然不同。所有DAO数据库类名都有“CDao”前缀。通常基于DAO的MFC类比基于ODBC的MFC类功能更强。基于DAO的类通过Microsoft
Jet数据库引擎访问数据,包括
ODBC驱动程序。它们还支持
数据定义语言(DDL)操作,例如通过类创建数据库、添加表和字段,而不必直接调用DAO。
MFC不实现DAO中用于安全性控制的Users和Groups收集。如果需要DAO的这些特征,必须通过直接调用DAO接口亲自对它们编程。有关信息,请参阅“技术指南54”。
创建Workspace收集中存在的新工作区在下面的Create成员函数中描述。工作区对象不支持数据库引擎会话之间的任何方法。如果应用
静态链接MFC,结束程序不会初始化数据库引擎。如果应用
动态链接MFC,MFCDLL
卸载时不初始化数据库引擎。
通过用Close成员函数关闭工作区来结束工作区会话。Close关闭以前没关闭的任何数据库,
回滚任何未提交
事务。
DAO在工作区级上管理
事务;因此,有多个打开数据库的工作区上的事务适用于所有数据库。例如两个数据库有未提交的更新,然后调用CommitTrans,则提交所有更新。如果想把
事务限制于单个数据库,则需要为它的单独工作区对象。