【VC开源代码栏目提醒】:网学会员VC开源代码为您提供EncaADO.cpp参考,解决您在EncaADO.cpp学习中工作中的难题,参考学习。
// EncaADO.cpp: implementation of the EncaADO class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "EncaADO.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
EncaADO::EncaADO()
{
}
EncaADO::EncaADO(CString strDBServer,
CString strUid,
CString strPwd,
CString strDBName)
{
// 保存数据库连接信息
m_strDBServer = strDBServer;
m_strUid = strUid;
m_strPwd = strPwd;
m_strDBName = strDBName;
// 连接数据库
InitADOConn();
}
EncaADO::~EncaADO()
{
ExitConnect();
}
// 连接数据库
void EncaADO::InitADOConn(CString strDBServer, //数据库服务器
CString strUid, //数据库登录账号
CString strPwd, //数据库登录密码
CString strDBName) //数据库名
{
// 保存数据库连接信息
m_strDBServer = strDBServer;
m_strUid = strUid;
m_strPwd = strPwd;
m_strDBName = strDBName;
// 初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
CString strConnectTmp;
strConnectTmp.Format("Provider=SQLOLEDB; Server=%s; \
Database=%s; uid=%s; pwd=%s;",
strDBServer,
strDBName,
strUid,
strPwd
);
_bstr_t strConnect = strConnectTmp;
// 建立与数据库的连接
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}
// 连接数据库
void EncaADO::InitADOConn()
{
InitADOConn(m_strDBServer, m_strUid, m_strPwd, m_strDBName);
}
// 执行查询指令并返回记录集
_RecordsetPtr& EncaADO::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空
// 或者处于关闭状态,则重新连接数据库
if(m_pConnection == NULL
|| m_pConnection->State == adStateClosed)
{
InitADOConn();
}
// 关闭此前的记录集
if (m_pRecordset != NULL && m_pRecordset->State != adStateClosed)
{
m_pRecordset->Close();
m_pRecordset = NULL;
}
// 创建记录集对象
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命令
BOOL EncaADO::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空
// 或者处于关闭状态,则重新连接数据库
if(m_pConnection==NULL
|| m_pConnection->State == adStateClosed)
{
InitADOConn();
}
// 执行命令
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
// 捕捉异常
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}
void EncaADO::ExitConnect()
{
// 关闭记录集
if (m_pRecordset != NULL
&& m_pRecordset->State != adStateClosed)
{
m_pRecordset->Close();
m_pRecordset = NULL;
}
// 关闭连接
if(m_pConnection != NULL
&& m_pConnection->State == adStateOpen)
{
m_pConnection->Close();
m_pConnection = NULL;
}
// 释放环境
::CoUninitialize();
}
上一篇:
EnalbeMenuItemVIEW.cpp
下一篇:
如何当一个轻松的班主任