簡介
大多數情況下不需要多個工作區,也不需創建明確的工作區對象;在打開資料庫和記錄集對象時,它們使用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數據成員,可以訪問記錄集的資料庫,以及間接訪問它的工作區。 |
其它操作
還提供了像修復損壞的資料庫或壓縮資料庫等其它資料庫操作。
所需頭檔案:#include <afxdao.h>