複製鏈接
請複製以下鏈接發送給好友

CDaoWorkspace

鎖定
CDaoWorkspace對象可讓一個用户管理從登錄到離開期間,指定的密碼保護的數據庫會話全過程。
外文名
CDaoWorkspace
特    點
大多數情況下不需要多個工作區
條    件
打開數據庫和記錄集對象
目    的
指定全部在同一個“事務區”內

目錄

CDaoWorkspace簡介

大多數情況下不需要多個工作區,也不需創建明確的工作區對象;在打開數據庫和記錄集對象時,它們使用DAO缺省工作區。但是如果需要,可以通過創建額外工作區對象同時運行多個會話。每個工作區對象可以包含它自己的Database收集中的多個打開的數據庫對象。MFC中工作區主要是一個事務管理器,指定全部在同一個“事務區”內的一系列打開數據庫。
注意:
DAO數據庫類與基於開放數據庫連接(ODBC)的MFC數據庫類截然不同。所有DAO數據庫類名都有“CDao”前綴。通常基於DAO的MFC類比基於ODBC的MFC類功能更強。基於DAO的類通過Microsoft Jet數據庫引擎訪問數據,包括ODBC驅動程序。它們還支持數據定義語言(DDL)操作,例如通過類創建數據庫、添加表和字段,而不必直接調用DAO。

CDaoWorkspace功能

類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數據成員,可以訪問記錄集的數據庫,以及間接訪問它的工作區。
其它操作
還提供了像修復損壞的數據庫或壓縮數據庫等其它數據庫操作。
所需頭文件:#include <afxdao.h>