關(guān)于ADO.NET VC聯(lián)合使用揭秘
ADO.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解ADO.NET了,我們先來簡單的概述一下ADO.NET,然后就在vc中如何使用 ADO.NET深入分析一下。ADO 是Microsoft為最新和最強(qiáng)大的數(shù)據(jù)訪問范例 OLE DB 而設(shè)計的,是一個便于使用的應(yīng)用程序?qū)咏涌?。ADO 使您能夠編寫應(yīng)用程序以通過 OLE.DB 提供者訪問和操作數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。ADO 最主要的優(yōu)點是易于使用、速度快、內(nèi)存支出少和磁盤遺跡小。ADO 在關(guān)鍵的應(yīng)用方案中使用最少的網(wǎng)絡(luò)流量,并且在前端和數(shù)據(jù)源之間使用最少的層數(shù),所有這些都是為了提供輕量、高性能的接口。之所以稱為 ADO,是用了一個比較熟悉的暗喻,OLE 自動化接口。
#T#OLE DB是一組”組件對象模型”(COM) 接口,是新的數(shù)據(jù)庫低層接口,它封裝了ODBC的功能,并以統(tǒng)一的方式訪問存儲在不同信息源中的數(shù)據(jù)。OLE DB是Microsoft UDA(Universal Data Access)策略的技術(shù)基礎(chǔ)。OLE DB 為任何數(shù)據(jù)源提供了高性能的訪問,這些數(shù)據(jù)源包括關(guān)系和非關(guān)系數(shù)據(jù)庫、電子郵件和文件系統(tǒng)、文本和圖形、自定義業(yè)務(wù)對象等等。也就是說,OLE DB 并不局限于 ISAM、Jet 甚至關(guān)系數(shù)據(jù)源,它能夠處理任何類型的數(shù)據(jù),而不考慮它們的格式和存儲方法。在實際應(yīng)用中,這種多樣性意味著可以訪問駐留在 Excel 電子數(shù)據(jù)表、文本文件、電子郵件/目錄服務(wù)甚至郵件服務(wù)器,諸如 Microsoft Exchange 中的數(shù)據(jù)。但是,OLE DB 應(yīng)用程序編程接口的目的是為各種應(yīng)用程序提供最佳的功能,它并不符合簡單化的要求。您需要的API 應(yīng)該是一座連接應(yīng)用程序和 OLE DB 的橋梁,這就是 ActiveX Data Objects (ADO)。
關(guān)于ADO.NET VC聯(lián)合使用
一、ADO.NET VC引入ADO庫文件
使用ADO前必須在工程的stdafx.h文件里用直接引入符號#import引入ADO庫文件,以使編譯器能正確編譯。代碼如下所示:代碼1:用#import引入ADO庫文件
- #import "c:\program files\common files\system\ado\msado15.dll"
- no_namespaces rename("EOF" adoEOF")
這行語句聲明在工程中使用ADO,但不使用ADO的名字空間,并且為了避免常數(shù)沖突,將常數(shù)EOF改名為adoEOF?,F(xiàn)在不需添加另外的頭文件,就可以使用ADO接口了。
二、ADO.NET VC初始化OLE/COM庫環(huán)境
必須注意的是,ADO庫是一組COM動態(tài)庫,這意味應(yīng)用程序在調(diào)用ADO前,必須初始化OLE/COM庫環(huán)境。在MFC應(yīng)用程序里,一個比較好的方法是在應(yīng)用程序主類的InitInstance成員函數(shù)里初始化OLE/COM庫環(huán)境。代碼2:初始化OLE/COM庫環(huán)境
- BOOL CADOApp::InitInstance()
- {
- if(!AfxOleInit())
- {
- AfxMessageBox(“OLE初始化出錯!”);
- return FALSE;
- }
- ……
- }
函數(shù)AfxOleInit在每次應(yīng)用程序啟動時初始化OLE/COM庫環(huán)境。同DAO和CDatabase一樣,ADO由幾個接口組成:_ConnectionPtr,_CommandPtr和_RecordsetPtr.不同于DAO和Cdatabase的是,ADO基于COM的接口,因此,假如你沒有接觸過COM,你應(yīng)該在使用ADO前先找有關(guān)書籍了解一下COM。