释义 |
CDaoWorkspace
CDaoWorkspace对象可让一个用户管理从登录到离开期间,指定的密码保护的数据库会话全过程。大多数情况下不需要多个工作区,也不需创建明确的工作区对象;在打开数据库和记录集对象时,它们使用DAO缺省工作区。但是如果需要,可以通过创建额外工作区对象同时运行多个会话。每个工作区对象可以包含它自己的Database收集中的多个打开的数据库对象。MFC中工作区主要是一个事务管理器,指定全部在同一个“事务区”内的一系列打开数据库。 注意: DAO数据库类与基于开放数据库连接(ODBC)的MFC数据库类截然不同。所有DAO数据库类名都有“CDao”前缀。通常基于DAO的MFC类比基于ODBC的MFC类功能更强。基于DAO的类通过Microsoft Jet数据库引擎访问数据,包括ODBC驱动程序。它们还支持数据定义语言(DDL)操作,例如通过类创建数据库、添加表和字段,而不必直接调用DAO。
功能 类CDaoWorkspace提供以下几点功能:· | 如果需要,由初始化数据库引擎创建,明确访问缺省工作区。通常通过创建数据库和记录集对象隐式地使用DAO缺省工作区。 | · | 事务应用工作区中打开的所有数据库的事务区。可以创建额外的工作区管理单独的事务区。 | · | 到基础Microsoft Jet数据库引擎的许多特性的接口(请参阅静态成员函数)。打开或创建工作区,或者在打开或创建之前调用静态成员函数、初始化数据库引擎。 | · | 访问数据库引擎的Workspace收集,存储所有已经附加其后的活动工作区。还可以不把它们附加到收集中创建和处理工作区。 |
安全性 MFC不实现DAO中用于安全性控制的Users和Groups收集。如果需要DAO的这些特征,必须通过直接调用DAO接口亲自对它们编程。有关信息,请参阅“技术指南54”。
用途 可以用类CDaoWorkspace来:· | 显式打开缺省工作区。 通常对缺省工作区的使用是隐式的──在打开新CDaoDatabase或Cdao Rec-ordset对象时。但是也不可能需要显式访问它──例如要访问数据库引擎特性或Workspace收集。有关“隐式使用缺省工作区”,请参阅下面的内容。 | · | 创建新工作区。如果想把它们添加到Workspaces收集中,则调用Append。 | · | 打开工作区收集中现有的工作区。 | 创建Workspace收集中存在的新工作区在下面的Create成员函数中描述。工作区对象不支持数据库引擎会话之间的任何方法。如果应用静态链接MFC,结束程序不会初始化数据库引擎。如果应用动态链接MFC,MFCDLL卸载时不初始化数据库引擎。 只在专业版和企业版中具有的特征:对MFC的静态链接,只有Visual C++专业版和企业版中支持。 显式打开缺省工作区或者打开Workspaces收集中已有工作区,都在下面的Open成员函数中描述。 通过用Close成员函数关闭工作区来结束工作区会话。Close关闭以前没关闭的任何数据库,回滚任何未提交事务。
事务 DAO在工作区级上管理事务;因此,有多个打开数据库的工作区上的事务适用于所有数据库。例如两个数据库有未提交的更新,然后调用CommitTrans,则提交所有更新。如果想把事务限制于单个数据库,则需要为它的单独工作区对象。
隐式使用缺省工作区 在以下环境中MFC隐式使用DAO缺省工作区:· | 如果创建一个新CDaoDatabase对象,但并不是通过现有CDaoWorkspace对象这样做的,则MFC创建一个对应于DAO缺省工作区的临时工作区对象。如果对多个数据库进行这样的操作,则所有数据库对象都对应于缺省工作区。可以通过CDaoDatabase数据成员访问数据库的工作区。 | · | 类似的,如果创建CDaoRecordset对象而不提供指向CDaoDatabase对象的指针,则MFC创建临时数据库对象和扩展后的临时工作区对象。通过一个Cdao Recordset数据成员,可以访问记录集的数据库,以及间接访问它的工作区。 |
其它操作 还提供了像修复损坏的数据库或压缩数据库等其它数据库操作。 有关CDaoWorkspace的更多信息,请参阅“DAO工作区”。有关直接调用DAO和关于DAO安全性的信息,请参阅“技术指南54”。有关通过DAO处理ODBC数据源的更多信息,请参阅“DAO扩展:使用外部数据源”。有关数据库引擎的信息,请参阅“DAO工作区:数据库引擎”。 所有文章都在联机文档“Visual C++程序员指南”中。MFC数据库样本DAOVIEW图解使用CDaoWorkspace。 #include <afxdao.h>
请参阅: CDaoDatabase, CDaoRecordset, CDaoTableDef, CDaoQueryDef, CDaoException
CDaoWorkspace类的成员
数据成员m_pDAOWorkspace | 指向基础DAO工作区对象 |
构造函数CDaoWorkspace | 构造一个工作区对象。然后调用Create或Open |
属性GetIsolateODBCTrans | 返回一个值,表示是否通过强制到数据源的多个连接分隔包含相同ODBC数据源的多个事务 | GetName | 返回用于工作区对象的用户定义名字 | GetUserName | 返回创建工作区时指定的用户名。这是工作区所有者的名字 | IsOpen | 如果工作区打开,则返回非零 | SetIsolateODBCTrans | 指定是否通过强制到数据源的多个连接分隔包含相同ODBC数据源的多个事务 |
操作Append | 把新创建的工作区附加到数据库引擎的Workspaces收集 | BeginTrans | 开始新事务,应用于工作区打开的所有数据库 | Close | 关闭工作区和它包含的所有对象。未完成事务回滚 | CommitTrans | 完成当前事务并保存变化 | CompactDatabase | 压缩(或复制)数据库 | Create | 创建一个新DAO工作区对象 | GetDatabaseCount | 返回工作区的Databases收集中的DAO数据库对象数量 | GetDatabaseInfo | 返回有关工作区的Databases收集中定义的指定DAO数据库的信息 | GetWorkspaceCount | 返回数据库引擎的Workspaces收集中DAO工作区对象数量 | GetWorkspaceInfo | 返回有关数据库引擎的Workspaces收集中定义的指定DAO工作区的信息 | Open | 显式打开DAO缺省工作区对应的工作区对象 | RepairDatabase | 试图修复销毁的数据库 | Rollback | 结束当前事务并不保存变化 | Idle | 允许数据库引擎执行后台任务 |
数据库引擎特性GetVersion | 返回一个字符串,包含对应于工作区的数据库引擎版本 | GetIniPath | 返回Windows登记中Microsoft Jet数据库引擎的初始化设置的位置 | GetLoginTimeout | 返回用户试图登录到ODBC数据库时发生错误之前的秒数 | SetDefaultPassword | 不带指定密码的工作区对象创建时,设置数据库引擎使用的密码 | SetDefaultUser | 不带指定用户名的工作区对象创建时,设置数据库引擎使用的用户名 | SetIniPath | 设置Windows登记中Microsoft Jet数据库引擎的初始化设置的位置 | SetLoginTimeout | 设置用户试图登录到ODBC数据库时发生错误之前的秒数 |
|