DAO物件模型組成
DAO物件模型,也就是Data Access Object,它是一個針對Jet引擎的訪問操作。所以對於Access資料庫來說,使用DAO無疑是最佳首選。而MFC DAO是微軟提供的用於訪問Microsoft Jet資料庫檔案(*.mdb)的強有力的資料庫開發工具,它通過對DAO的封裝,向程式員提供了各種輔助類,從而大大降低了DAO對象使用複雜度。DAO模型通過多個DAO對象構成一個體繫結構,在這個結構裡,各個DAO對象協同工作。對應MFC DAO的對象如下所示:
CDaoWorkspace
此對象用來管理具有使用者名稱、密碼保護的資料庫,大部分程式使用預設的工作區。
CDaoDatabase
通過此對象與資料庫建立串連。建立串連後,才能對資料庫採取進一步的操作。
CDaoRecordset
用來表示從資料來源中查詢的資料記錄集合。
CDaoRecordView
通過一個視圖控制項來顯示資料記錄。
CDaoQueryDef
對查詢定義的表述,查詢定義通常儲存於資料庫當中。
CDaoTableDef
用來表示一個資料實體表或連結資料表的定義。
CDaoException
這個對象用來對DAO中產生的異常進行封裝。
CDaoFieldExchange
此對象用來對DAO的欄位改變的路徑提供支援,通常不會直接使用到此對象。
其中CDaoDatabase 及CDaoRecordset 是兩個比較重要的對象,幾乎所有的DAO資料庫都有這兩個對象的身影。其他還定義了一些資料類型的類:ClongBinary、ColeCurrency、COleDateTime 、ColeVariant。分別用來處理資料二進位對象、貨幣類型、時間類型及變體類型。
同樣為了讓同學們有個直觀的認識,我們同樣試圖通過DAO來訪問學生資訊管理系統。我們看看通過DAO訪問資料庫的大概步驟。重點認識CDaoDatabase 、CDaoRecordset這兩個對象。
首先,同樣要建立對資料庫的串連,我們通過CdaoDatabase對象來完成該任務。
CDaoDatabase daoDB;// 建立資料庫連接對象<br />daoDB.Open( _T("classdat.mdb") );//通過資料庫連接對象開啟資料庫
這樣我們就與資料庫classdat.mdb建立了串連,然後我們訪問其中的表資料。此時需要用到CDaoRecordset對象
CDaoRecordset daoRs; // 建立資料集合對象<br />daoRs.Open( AFX_DAO_USE_DEFAULT_TYPE, _T("select * from Students") );//開啟表Students
資料表已經被開啟,並被daoRs接收。我們就可以對該表進行訪問、修改、刪除操作了。
如果要訪問欄位內容,可通過CDaoRecordset對象的GetFieldValue操作。
如:
COleVariant vValue;<br />daoRs.GetFieldValue( 1, vValue );
就可以將第二個欄位(欄位索引從0開始)儲存到vValue對象當中。在學生資訊管理系統當中,該欄位是學生姓名,所以儲存的代碼如下:
m_strStudentName = vValue;
當要對欄位進行修改時,可以通過SetFieldValue操作。
如:
vValue = m_strStudentName.GetString();<br />m_daoRs.SetFieldValue( 1, vValue );
就將資料庫中的學生姓名欄位更新為strStudentName的內容了。
刪除操作則直接通過Delete函數。
daoRs.Delete();//這裡將刪除目前記錄。
同樣我們要訪問前一條記錄或後一條記錄,可以通過MovePrev和MoveNext。
至此,你已經可以通過DAO來建立你的簡單的資料庫軟體了。使用DAO操作資料庫是不是很簡單呢?
9.2.4 DAO 特點
DAO提供了一種通過程式碼建立和操縱資料庫的機制。最大特點是對MICROSOFT JET資料庫的操作很方便,而且是操作JET資料庫時效能最好的技術介面之一。當你需要訪問Access資料庫時,不妨使用DAO物件模型來進行操作。DAO具有如下幾個顯著特點。
首先,DAO使用相對比較簡單。
我們看到DAO模型中,主要對象包括CDaoWorkspace 、CDaoDatabase 、CDaoRecordset三個,一般情況下應用後兩個對象已經能完成大部分的工作。對象的操作也比較直觀,通過函數名已經能大概知道具有的操作。加上MFC對其的封裝,更進一步降低了它的使用難度。
其次,DAO是用來訪問Jet引擎的方法,主要用來訪問Access資料庫。
可以說DAO天生是用來操作Access資料庫的,但它並不局限於Access資料庫。通過DAO技術可以訪問從文字檔到大型後台資料庫等多種資料格式。使用ACCESS把ODBC表添加到一個MDB檔案上,我們也可以通過DAO訪問提供了ODBC驅動的資料庫。
再者,DAO是操作JET資料庫時效能最好的技術介面之一。
因為DAO是針對JET資料庫來開發的,所以通過它來訪問Access資料庫具有高效的特點。
最後,因為Microsoft Jet不支援多線程,因此,必須限制調用到應用程式主線程的所有DAO。也就是需要使用者自己負責同步工作。