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