在Visual C++中用ADO進行資料庫程式設計 (轉)
在Visual C++中用ADO進行資料庫程式設計 (轉)[@more@]在Visual C++中用ADO進行 作者: 蔣東宇
轉自:
資料(ADO)是OLE 上面的高層資料庫。我們在C++中也可以ADO。本文將在6.0環境下做一個小小的例子解釋如何使用ADO。
1. 生成應用程式並初始化OLE/COM庫環境
建立一個標準的MFC AppWizard(exe)應用程式,然後在應用程式類的InitInstance中初始化OLE/COM庫(因為ADO庫是一個DLL庫)。
BOOL CADOTestApp::InitInstance()
{ //初始化OLE/COM庫環境
AfxOleInit();}
2. 引入ADO庫
使用ADO前必須在工程的stdafx.h檔案裡用直接引入符號#import引入ADO庫檔案,以使能正確編譯。程式碼如下:
#include 〈comdef.h〉
#import "c:program filescommon filessystemadomsado15.dll"
no_namespace
rename ("EOF","adoEOF")
標頭檔案comdef.h使我們的應用程式能夠使用Visual C++中的一些特殊COM支援類,這些類使得處理OLE自治更為容易一些,OLE自治是ADO使用的資料型別。後三行使用#import指令在我們的應用程式中輸入ADO類庫定義。
ADO類的定義是作為一種資源在ADO DLL(msado15.dll)中,在其內部稱為型別庫。型別庫描述了自治介面,以及C++使用的COM vtable介面。當使用#import指令時,在執行時Visual C++需要從ADO DLL中讀取這個型別庫,並以此建立一組C++標頭檔案。這些標頭檔案具有.tli 和.tlh副檔名,讀者可以在專案的目錄下找到這兩個檔案。在C++程式程式碼中呼叫的ADO類要在這些檔案中定義。
程式的第三行指示ADO物件不使用名稱空間。在有些應用程式中,由於應用程式中的物件與ADO中的物件之間可能會出現命名衝突,所以有必要使用名稱空間。如果要使用名稱空間,則可把第三行程式修改為: rename_namespace("AdoNS")。第四行程式碼將ADO中的EOF(檔案結束)更名為adoEOF,以避免與定義了自己的EOF的其他庫衝突。
3.利用智慧指標進行資料庫操作
在CaboutDlg標頭檔案中定義兩個ADO智慧指標類例項,並在對話方塊中加入一個ListCtrl。
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
ClistCtrl m_List;
ADO庫包含三個智慧指標:_ConnectionPtr、_CommandPtr和_RecordsetPtr。
_ConnectionPtr通常被用來建立一個資料連線或一條不返回任何結果的語句,如一個。
_CommandPtr返回一個記錄集。它提供了一種簡單的方法來執行返回記錄集的儲存過程和SQL語句。在使用_CommandPtr介面時,可以利用全域性_ConnectionPtr介面,也可以在_CommandPtr介面裡直接使用連線串。
_RecordsetPtr是一個記錄集物件。與以上兩種物件相比,它對記錄集提供了更多的控制功能,如記錄鎖定、遊標控制等。
在OnInitDialog()中加入以下程式碼:
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
_variant_t TheValue;
m_List.ResetContent();
m_pConnection.CreateInstance(_uuidof(Connection));
m_pRecordset.CreateInstance(_uuidof(Recordset));
try{
m_pConnection->Open("DSN=ADOTest","","",0); //連線叫作ADOTest的ODBC資料來源
m_pRecordset->Open(" * FROM BlockDefine",(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCmdText);
//執行SQL語句得到一個記錄集
while(!m_pRecordset->adoEOF)
//遍歷所有記錄
{
TheValue = m_pRecordset->GetCollect("BlockIndex");
//得到欄位BlockIndex的值
if(TheValue.vt!=VT_NULL)
m_List.AddString((char*)_bstr_t(TheValue)); //將該值加入到列表中
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
m_pConnection->Close();
}
catch(_com_error e) //異常處理
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset = NULL;
m_pConnection = NULL;
return TRUE; // return TRUE unless you set the focus to a control
}
程式中透過_variant_t和_bstr_t轉換COM物件和C++型別的資料, _variant_t類封裝了OLE自治VARIANT資料型別。在C++中使用_variant_t類要比直接使用VARIANT資料型別容易得多。
好,編譯後該程式就能執行了,但記住執行前要建立一個叫ADOTest的ODBC資料來源。該程式將把表BlockDefine中的BlockIndex欄位值顯示在列表控制元件中。
轉自:
資料(ADO)是OLE 上面的高層資料庫。我們在C++中也可以ADO。本文將在6.0環境下做一個小小的例子解釋如何使用ADO。
1. 生成應用程式並初始化OLE/COM庫環境
建立一個標準的MFC AppWizard(exe)應用程式,然後在應用程式類的InitInstance中初始化OLE/COM庫(因為ADO庫是一個DLL庫)。
BOOL CADOTestApp::InitInstance()
{ //初始化OLE/COM庫環境
AfxOleInit();}
2. 引入ADO庫
使用ADO前必須在工程的stdafx.h檔案裡用直接引入符號#import引入ADO庫檔案,以使能正確編譯。程式碼如下:
#include 〈comdef.h〉
#import "c:program filescommon filessystemadomsado15.dll"
no_namespace
rename ("EOF","adoEOF")
標頭檔案comdef.h使我們的應用程式能夠使用Visual C++中的一些特殊COM支援類,這些類使得處理OLE自治更為容易一些,OLE自治是ADO使用的資料型別。後三行使用#import指令在我們的應用程式中輸入ADO類庫定義。
ADO類的定義是作為一種資源在ADO DLL(msado15.dll)中,在其內部稱為型別庫。型別庫描述了自治介面,以及C++使用的COM vtable介面。當使用#import指令時,在執行時Visual C++需要從ADO DLL中讀取這個型別庫,並以此建立一組C++標頭檔案。這些標頭檔案具有.tli 和.tlh副檔名,讀者可以在專案的目錄下找到這兩個檔案。在C++程式程式碼中呼叫的ADO類要在這些檔案中定義。
程式的第三行指示ADO物件不使用名稱空間。在有些應用程式中,由於應用程式中的物件與ADO中的物件之間可能會出現命名衝突,所以有必要使用名稱空間。如果要使用名稱空間,則可把第三行程式修改為: rename_namespace("AdoNS")。第四行程式碼將ADO中的EOF(檔案結束)更名為adoEOF,以避免與定義了自己的EOF的其他庫衝突。
3.利用智慧指標進行資料庫操作
在CaboutDlg標頭檔案中定義兩個ADO智慧指標類例項,並在對話方塊中加入一個ListCtrl。
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
ClistCtrl m_List;
ADO庫包含三個智慧指標:_ConnectionPtr、_CommandPtr和_RecordsetPtr。
_ConnectionPtr通常被用來建立一個資料連線或一條不返回任何結果的語句,如一個。
_CommandPtr返回一個記錄集。它提供了一種簡單的方法來執行返回記錄集的儲存過程和SQL語句。在使用_CommandPtr介面時,可以利用全域性_ConnectionPtr介面,也可以在_CommandPtr介面裡直接使用連線串。
_RecordsetPtr是一個記錄集物件。與以上兩種物件相比,它對記錄集提供了更多的控制功能,如記錄鎖定、遊標控制等。
在OnInitDialog()中加入以下程式碼:
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
_variant_t TheValue;
m_List.ResetContent();
m_pConnection.CreateInstance(_uuidof(Connection));
m_pRecordset.CreateInstance(_uuidof(Recordset));
try{
m_pConnection->Open("DSN=ADOTest","","",0); //連線叫作ADOTest的ODBC資料來源
m_pRecordset->Open(" * FROM BlockDefine",(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCmdText);
//執行SQL語句得到一個記錄集
while(!m_pRecordset->adoEOF)
//遍歷所有記錄
{
TheValue = m_pRecordset->GetCollect("BlockIndex");
//得到欄位BlockIndex的值
if(TheValue.vt!=VT_NULL)
m_List.AddString((char*)_bstr_t(TheValue)); //將該值加入到列表中
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
m_pConnection->Close();
}
catch(_com_error e) //異常處理
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset = NULL;
m_pConnection = NULL;
return TRUE; // return TRUE unless you set the focus to a control
}
程式中透過_variant_t和_bstr_t轉換COM物件和C++型別的資料, _variant_t類封裝了OLE自治VARIANT資料型別。在C++中使用_variant_t類要比直接使用VARIANT資料型別容易得多。
好,編譯後該程式就能執行了,但記住執行前要建立一個叫ADOTest的ODBC資料來源。該程式將把表BlockDefine中的BlockIndex欄位值顯示在列表控制元件中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Visual C++ ADO資料庫程式設計入門C++資料庫程式設計
- ADO資料庫程式設計入門(轉)資料庫程式設計
- 在C++Builder 5中使用ADO資料庫程式設計 (轉)C++UI資料庫程式設計
- 理解 Visual C++ Extensions for ADO(轉)C++
- 在DELPHI程式中使用ADO物件存取ODBC資料庫 (轉)物件資料庫
- 在Visual C++中利用UDL檔案建ADO連線(轉)C++
- ADO程式設計應用 (轉)程式設計
- 在 Oracle JDeveloper 中進行 Ajax 程式設計(轉)OracleDeveloper程式設計
- Visual C++ 6.0程式設計實現列印功能(轉)C++程式設計
- WINDOWS CE 資料庫程式設計 (轉)Windows資料庫程式設計
- 在VB中用Paintpicture方法進行圖形處理 (轉)AI
- 使用Visual Studio Code進行MicroPython程式設計Python程式設計
- ADO連線資料庫字串大全 (轉)資料庫字串
- 非Access資料庫在VB的程式設計及應用 (轉)資料庫程式設計
- Delphi資料庫程式設計教程(九) (轉)資料庫程式設計
- C++ 用libcurl庫進行http通訊網路程式設計C++HTTP程式設計
- C++用libcurl庫進行http網路通訊程式設計C++HTTP程式設計
- VC的另類資料庫程式設計(轉)資料庫程式設計
- C#下資料庫程式設計(二) (轉)C#資料庫程式設計
- 在RAC中用NID修改資料庫名稱資料庫
- [譯]在HealthKit中用 Swift 進行睡眠分析Swift
- 利用ADO壓縮Access資料庫程式碼資料庫
- 在Javascript中進行面向切面程式設計JavaScript程式設計
- 在兩個資料庫之間進行資料同步資料庫
- 使用C#語言操作ADO資料庫 (轉)C#資料庫
- 使用ADO,多執行緒訪問ACCESS資料庫的開發。 (轉)執行緒資料庫
- Java的資料庫程式設計(JDBC)技術[轉]Java資料庫程式設計JDBC
- 談談VB的資料庫程式設計方式 (轉)資料庫程式設計
- VB資料庫程式設計的幾點心得 (轉)資料庫程式設計
- 用Python實現資料庫程式設計 (轉)Python資料庫程式設計
- 怎樣用c/c++程式設計連線mysql資料庫?C++程式設計MySql資料庫
- 在Visual Basic 中使用C++ 類 (轉)C++
- 資料庫實驗八 資料庫程式設計資料庫程式設計
- 擴 展Visual c++ MFC 類 庫 (轉)C++
- Visual Basic 程式設計標準(1) (轉)程式設計
- Visual C++網路程式設計案例實戰pdfC++程式設計
- SQL Server中使用DTS設計器進行資料轉移SQLServer
- Ado.net中SQLServer資料庫連線池(轉)SQLServer資料庫