ADOConn.h頭文件:
#pragma once
#import "c:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADODB") rename("EOF","adoEOF") rename("BOF","adoBOF")
using namespace ADODB;
class ADOConn
{
// 定義變量
public:
//添加一個指向Connection對象的指針:
_ConnectionPtr m_pConnection;
//添加一個指向Recordset對象的指針:
_RecordsetPtr m_pRecordset;
// 定義方法
public:
ADOConn();
virtual ~ADOConn();
// 初始化—連接數據庫
void OnInitADOConn();
// 執行查詢
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
// 執行SQL語句,Insert Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
//關閉數據庫連接
void ExitConnect();
};
ADOConn.cpp源文件代碼:
// ADOConn.cpp: implementation of the ADOConn class.
// 通用連接數據庫類
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
// 初始化—連接數據庫
void ADOConn::OnInitADOConn()
{
// 初始化OLE/COM庫環境
::CoInitialize(NULL);
try
{
//CString strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=GARDE;Data Source=(local)";
CString strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=GARDE;Data Source=HP-PC\\HZU";
m_pConnection.CreateInstance(_uuidof(Connection));
m_pConnection->Open(_bstr_t(strSQL),"","",adModeUnknown);
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
AfxMessageBox(e.Description());
}
}
// 執行查詢
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 連接數據庫,如果Connection對象爲空,則重新連接數據庫
if(m_pConnection==NULL)
OnInitADOConn();
// 創建記錄集對象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的記錄
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
AfxMessageBox(e.Description());
}
// 返回記錄集
return m_pRecordset;
}
// 執行SQL語句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
// _variant_t RecordsAffected;
try
{
// 是否已經連接數據庫
if(m_pConnection == NULL)
OnInitADOConn();
// Connection對象的Execute方法:(_bstr_t CommandText,
// VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 參數RecordsAffected是操作完成後所影響的行數,
// 參數Options表示CommandText的類型:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存儲過程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return TRUE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return FALSE;
}
}
void ADOConn::ExitConnect()
{
// 關閉記錄集和連接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 釋放環境
::CoUninitialize();
}