天天看點

VC中利用ADO通路資料庫的一個簡單執行個體

1、建立執行個體工程

建立一個MFC基于對話框的用用程式,工程名為Ado。界面布局如圖1所示

VC中利用ADO通路資料庫的一個簡單執行個體

圖1 VC連接配接資料庫界面布局示意圖 

2、導入庫檔案 

使用ADO前必須在工程的stdafx.h檔案最後用直接引入符号#import引入ADO庫檔案,以使編譯器能正确編譯。代碼如下:

// 加入ADO支援庫
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")    
           

ADO類的定義是作為一種資源存儲在ADO DLL(msado15.dll)中,在其内部稱為類型庫。

類型庫描述了自治接口,以及C++使用的COM vtable接口。

當使用#import指令時,在運作時Visual C++需要從ADO DLL中讀取這個類型庫,

并以此建立一組C++頭檔案。這些頭檔案具有.tli 和.tlh擴充名,#import引入ADO庫檔案的代碼編譯後,在項目的目錄下生成了這兩個檔案。在C++程式代碼中調用的ADO類要在這些檔案中定義。

程式的第er行訓示ADO對象不使用名稱空間,在有些應用程式中,

由于應用程式中的對象與ADO中的對象之間可能會出現命名沖突,是以有必要使用名稱空間。

如果要使用名稱空間,則可把第三行程式修改為: rename_namespace("AdoNS")。

第三行代碼将ADO中的EOF(檔案結束)更名為adoEOF,因為檔案的結尾也是以EOF結尾的,是為了避免與定義了自己的EOF的其他庫沖突。 至于改為什麼名字,可以根據自己的命名習慣自己确定。 

3、初始化COM環境

OLE DB 是基于COM技術編寫的,ADO是OLE DB基礎之上的使用者程式,

OLE DB是一個COM元件,在通路COM元件的時候需要初始化COM庫,方法如下:

(1)   ::CoInitialize(NULL); //初始化OLE/COM庫環境

//對資料庫的通路在上下代碼之間寫,下面第三步就應該寫在這裡

::CoUninitialize();//既然初始化了環境,當然一定要記得釋放他了

(2)也可以調用MFC全局函數

AfxOleInit(); 

4、 給查詢按鈕添加消息響應事件,代碼如下:

void CAdoDlg::OnBtnQuery()
{
// 初始化OLE/COM庫環境
CoInitialize(NULL);
 
//_ConnectionPtr     智能指針定義一個連接配接對象同時對這個對象進行初始化
_ConnectionPtr	 pConn(__uuidof(Connection));
//記錄集的指針對象同上
_RecordsetPtr pRst(__uuidof(Recordset));
 
// 打開本地Access庫Demo.mdb
//這裡說明一下Demo.mdb     是      一個Access資料庫檔案表名DemoTable 兩個字段姓名和年齡
//存放在系統的目前目錄(和源檔案至于同一目錄)
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);
 
pRst=pConn->Execute(_T("SELECT * FROM DemoTable"),NULL,adCmdText);
 
while(!pRst->adoEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect(_T("Name")));
pRst->MoveNext();
//((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect(_T("Age")));
//pRst->MoveNext();
}
//關閉記錄集
pRst->Close();
//關閉連接配接
pConn->Close();
//釋放智能指針在COM接口上的引用計數注意是.不是->
pRst.Release();
pConn.Release();
// 解除安裝OLE/COM庫環境
CoUninitialize();
}
           

注:注意需要添加一個資料庫檔案

5、查詢結果

點選查詢,清單框中顯示資料庫檔案中存放的資料集。

示意圖如圖2所示:

VC中利用ADO通路資料庫的一個簡單執行個體

圖2 查詢結果名稱示意圖

VC中利用ADO通路資料庫的一個簡單執行個體

圖3 查詢結果年齡示意圖

 至此,利用ADO通路資料庫的過程已經結束,可以通路資料庫中的資料。後續再補充對資料庫檔案中的資料進行操作的實作。

說明:本地的資料庫檔案Demo.mdb 用Excel打開如圖三所示:

VC中利用ADO通路資料庫的一個簡單執行個體

圖4 資料庫中存放資料示意圖

 和程式執行結果進行比較可以發現資料的順序是不一緻的,名稱按照首字母,數字按照遞增的順序,這個問題慢慢再研究。 

待完善