***********************ADO接口簡介*********************************/
ADO庫包含三個基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
_ConnectionPtr接口返回一個記錄集或一個空指針。
通常使用它來創建一個數據連接或執行一條不返回任何結果的SQL語句,如一個存儲過程。
使用_ConnectionPtr接口返回一個記錄集不是一個好的使用方法。
通常同Cdatabase一樣,使用它創建一個數據連接,然後使用其它對象執行數據輸入輸出操作。
_CommandPtr接口返回一個記錄集。
它提供了一種簡單的方法來執行返回記錄集的存儲過程和SQL語句。
在使用_CommandPtr接口時,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口裡直接使用連接串。
如果你只執行一次或幾次數據訪問操作,後者是比較好的選擇。
但如果你要頻繁訪問數據庫,並要返回很多記錄集,那麼,你應該使用全局_ConnectionPtr接口創建一個數據連接,
然後使用_CommandPtr接口執行存儲過程和SQL語句。
_RecordsetPtr是一個記錄集對象。
與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定,游標控制等
。同_CommandPtr接口一樣,它不一定要使用一個已經創建的數據連接,
可以用一個連接串代替連接指針賦給_RecordsetPtr的connection成員變量,讓它自己創建數據連接。
如果你要使用多個記錄集,最好的方法是同Command對象一樣使用已經創建了數據連接的全局_ConnectionPtr接口
,然後使用_RecordsetPtr執行存儲過程和SQL語句。
/***********************基本流程***********************************/
(1)初始化COM庫,引入ADO庫定義文件
(2)用Connection對象連接數據庫
(3)利用建立好的連接,通過Connection、Command對象執行SQL命令,或利用Recordset對象取得結果記
錄集進行查詢、處理。
(4)使用完畢後關閉連接釋放對象。
/***********************【1】COM庫的初始化***********************************/
我們可以使用AfxOleInit()來初始化COM庫,這項工作通常在CWinApp::InitInstance()的重載函數中完
成,請看如下代碼:
BOOL CADOTest1App::InitInstance()
{
AfxOleInit();
......
}
/*****************【2】用#import指令引入ADO類型庫**********************/
我們在stdafx.h中加入如下語句:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
其最終作用同我們熟悉的#include類似,編譯的時候系統會為我們生成msado15.tlh,ado15.tli兩個C++頭文件來定義ADO庫。
/***************【3】創建Connection對象並連接數據庫********************/
首先我們需要添加一個指向Connection對象的指針:
_ConnectionPtr m_pConnection;
BOOL CADOTest1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
try
{
HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");//創建Connection對象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",