VC++資料庫技術系列(三)DAO物件模型組成

來源:互聯網
上載者:User

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。也就是需要使用者自己負責同步工作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.