注意:
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會建立一個臨時的工作區)。 |
打開一個現有的資料庫,要構造一個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提供了支持表定義、查詢定義和記錄集對象的類,但沒有支持關係對象的類。
#include <afxdao.h>