VC++數據庫技術系列(三)DAO對象模型組成

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數據庫都有這兩個對象的身影。其他還定義了一些數據類型的類:ClongBinaryColeCurrencyCOleDateTime ColeVariant。分別用來處理數據二進制對象、貨幣類型、時間類型及變體類型。

 

同樣爲了讓同學們有個直觀的認識,我們同樣試圖通過DAO來訪問學生信息管理系統。我們看看通過DAO訪問數據庫的大概步驟。重點認識CDaoDatabase CDaoRecordset這兩個對象。

首先,同樣要建立對數據庫的連接,我們通過CdaoDatabase對象來完成該任務。

 

 

這樣我們就與數據庫classdat.mdb建立了連接,然後我們訪問其中的表數據。此時需要用到CDaoRecordset對象

 

 

數據表已經被打開,並被daoRs接收。我們就可以對該表進行訪問、修改、刪除操作了。

如果要訪問字段內容,可通過CDaoRecordset對象的GetFieldValue操作。

如:

 

 

就可以將第二個字段(字段索引從0開始)保存到vValue對象當中。在學生信息管理系統當中,該字段是學生姓名,所以保存的代碼如下:

 

 

當要對字段進行修改時,可以通過SetFieldValue操作。

如:

 

就將數據庫中的學生姓名字段更新爲strStudentName的內容了。

刪除操作則直接通過Delete函數。

daoRs.Delete();//這裏將刪除當前記錄。

同樣我們要訪問前一條記錄或後一條記錄,可以通過MovePrevMoveNext

至此,你已經可以通過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技術可以訪問從文本文件到大型後臺數據庫等多種數據格式。使用ACCESSODBC表添加到一個MDB文件上,我們也可以通過DAO訪問提供了ODBC驅動的數據庫。

再者,DAO是操作JET數據庫時性能最好的技術接口之一。

因爲DAO是針對JET數據庫來開發的,所以通過它來訪問Access數據庫具有高效的特點。

最後,因爲Microsoft Jet不支持多線程,因此,必須限制調用到應用程序主線程的所有DAO。也就是需要使用者自己負責同步工作。

發佈了64 篇原創文章 · 獲贊 102 · 訪問量 138萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章