基于ADO的VC++数据库操作类实现
作者:l4nk0r
时间:2010-1-22
功能:基于ADO数据库类实现
1.首先在stdafx.h文件添加如下代码:
// 导入ADO的动态链接库
#import "c:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
2.实现ADOConn.h类定义
class ADOConn
{
public:
ADOConn();
virtual ~ADOConn();
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
_RecordsetPtr m_pSubRecord;
_variant_t b;
_variant_t c;
public:
// 初始化—连接数据库
void OnInitADOConn();
// 执行查询
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
// 执行SQL语句,Insert Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
3.类的实现文件ADOConn.cpp
#include "stdafx.h"
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
// 初始化数据库连接
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
// 创建实例
m_pConnection.CreateInstance("ADODB.Connection");
// 这里我写的是针对Access数据库的连接字符串,请相应修改
_bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=point.mdb;Mode=ReadWrite;Persist Security Info=False";
// 打开数据库
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 异常捕获
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
// 获取记录集
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 执行sql语句得到记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInte易做图cePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return m_pRecordset;
}
// 执行任意SQL语句
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
if(m_pConnection == NULL)
OnInitADOConn();
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();
}
补充:软件开发 , Vc ,