高手教你ADO創(chuàng)建數(shù)據(jù)庫(kù)
ADO創(chuàng)建數(shù)據(jù)庫(kù)還是比較常用的,于是我研究了一下ADO創(chuàng)建數(shù)據(jù)庫(kù),在這里拿出來和大家分享一下,希望對(duì)大家有用。ADO(Active Data Object,活動(dòng)數(shù)據(jù)對(duì)象)實(shí)際上是一種基于COM(組件對(duì)象模型)的自動(dòng)化接口(IDispatch)技術(shù),并以 OLE DB(對(duì)象連接和鑲?cè)氲臄?shù)據(jù)庫(kù))為基礎(chǔ),經(jīng)過OLE DB精心包裝后的數(shù)據(jù)庫(kù)訪問技術(shù),利用它可以快速的創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序。
ADO提供了一組非常簡(jiǎn)單,將一般通用的數(shù)據(jù)訪問細(xì)節(jié)進(jìn)行封裝的對(duì)象。由于ODBC數(shù)據(jù)源也提供了一般的OLE DB Privider,所以ADO不僅可以應(yīng)用自身的 OLE DB Privider,而且還可以應(yīng)用所有的ODBC驅(qū)動(dòng)程序。
#T#關(guān)于OLE DB和ADO的其它詳細(xì)情況,讀者可以自行查閱相關(guān)書籍或 MSDN,這里就不一一說明了。讓我們直接步入主題:如何掌握ADO這種數(shù)據(jù)庫(kù)訪問技術(shù)。ADO的操作方法和前面講過的DAO的操作在很多方面存在相似之處,在這里,筆者為了更有效的說明它的使用方法,用VC6.0做了一個(gè)示例程序——AdoRWAccess,這個(gè)示例程序可以直接通過ADO來操作 Access數(shù)據(jù)庫(kù),示例程序的運(yùn)行效果如上圖所示:
在示例程序中我們?nèi)圆捎迷瓗?kù)結(jié)構(gòu),數(shù)據(jù)庫(kù)名Demo.mdb,庫(kù)內(nèi)表名DemoTable,表內(nèi)字段名為Name(姓名)和Age(年齡)的兩個(gè)字段,來構(gòu)造示例程序操作所需的Access數(shù)據(jù)庫(kù),這也和上兩篇文章的示例源碼中的庫(kù)結(jié)構(gòu)相兼容。
下面讓我們看看ADO創(chuàng)建數(shù)據(jù)庫(kù)訪問技術(shù)使用的基本步驟及方法: 首先,要用#import語(yǔ)句來引用支持ADO的組件類型庫(kù)(*.tlb),其中類型庫(kù)可以作為可執(zhí)行程序(DLL、EXE等)的一部分被定位在其自身程序中的附屬資源里,如:被定位在msado15.dll的附屬資源中,只需要直接用#import引用它既可??梢灾苯釉赟tdafx.h文件中加入下面語(yǔ)句來實(shí)現(xiàn):
- #import "c:\program files\common files\system\ado\msado15.dll" \
- no_namespace \
- rename ("EOF", "adoEOF")
其中路徑名可以根據(jù)自己系統(tǒng)安裝的ADO支持文件的路徑來自行設(shè)定。當(dāng)編譯器遇到#import語(yǔ)句時(shí),它會(huì)為引用組件類型庫(kù)中的接口生成包裝類,#import語(yǔ)句實(shí)際上相當(dāng)于執(zhí)行了API涵數(shù)LoadTypeLib()。#import語(yǔ)句會(huì)在工程可執(zhí)行程序輸出目錄中產(chǎn)生兩個(gè)文件,分別為*.tlh(類型庫(kù)頭文件)及*.tli(類型庫(kù)實(shí)現(xiàn)文件),它們分別為每一個(gè)接口產(chǎn)生智能指針,并為各種接口方法、枚舉類型,CLSID等進(jìn)行聲明,創(chuàng)建一系列包裝方法。語(yǔ)句no_namespace說明ADO對(duì)象不使用命名空間,rename ("EOF", "adoEOF")說明將ADO中結(jié)束標(biāo)志EOF改為adoEOF,以避免和其它庫(kù)中命名相沖突。
其次,在程序初始過程中需要初始化組件,一般可以用 CoInitialize(NULL);來實(shí)現(xiàn),這種方法在結(jié)束時(shí)要關(guān)閉初始化的COM,可以用下面語(yǔ)句CoUnInitialize();來實(shí)現(xiàn)。在 MFC中還可以采用另一種方法來實(shí)現(xiàn)初始化COM,這種方法只需要一條語(yǔ)句便可以自動(dòng)為我們實(shí)現(xiàn)初始化COM和結(jié)束時(shí)關(guān)閉COM的操作,語(yǔ)句如下所示: AfxOleInit(); 接著,就可以直接使用ADO的操作了。我們經(jīng)常使用的只是前面用#import語(yǔ)句引用類型庫(kù)時(shí),生成的包裝類.tlh中聲明的智能指針中的三個(gè),它們分別是_ConnectionPtr、_RecordsetPtr和_CommandPtr。