📄 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()
{
m_bFlag=true; //默认为:true(成功)
}
ADOConn::~ADOConn()
{
}
//------------------------------------------------------------------------------------------------------------
// 初始化数据库连接
// 输入参数: v_iSelect(数据库选择) v_sDb0 v_sDb1 v_sDb2 v_sDb3
// 0: SQL数据库 数据库服务器地址/名称 数据库名称 用户名称 密码
// 1: ACCESS数据库 数据库名称 用户名称 密码
// 2: ODBC数据源 数据库源 用户名称 密码
// 输出结果: 连接数据库成功,获得Connection对象
//------------------------------------------------------------------------------------------------------------
void ADOConn::OnInitADOConn(int v_iSelect,CString v_sDb0,CString v_sDb1,CString v_sDb2,CString v_sDb3)
{
_bstr_t strConnect;
::CoInitialize(NULL); // 初始化OLE/COM库环境
try
{
m_pConnection.CreateInstance("ADODB.Connection"); // 创建Connection对象
switch(v_iSelect) // 根据数据库类型,设置连接字符串,必须是BSTR型或者_bstr_t类型
{
case 0: // SQL 数据库
strConnect = "Provider=SQLOLEDB;Server="+v_sDb0+";Database="+v_sDb1+";uid="+v_sDb2+";pwd="+v_sDb3;
break;
case 1: // ACCESS 数据库
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+v_sDb1+";jet oledb:database password="+v_sDb3;
break;
case 2: // ODBC 访问方式
strConnect = "Data Source="+v_sDb0+";uid="+v_sDb2+";pwd="+v_sDb3;
break;
}
m_pConnection->Open(strConnect,"","",adModeUnknown); // 连接数据库
}
catch(_com_error e) // 捕捉异常
{
AfxMessageBox(" 数据库:"+e.Description()+" ");
// 显示错误信息
m_bFlag=false; // 数据库连接失败
}
}
//------------------------------------------------------------------------------------------------------------
// 执行查询,返回记录集: 对应select语句
//------------------------------------------------------------------------------------------------------------
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset)); // 创建记录集对象
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
// 取得表中的记录
}
catch(_com_error e) // 捕捉异常
{
AfxMessageBox(e.Description()); // 显示错误信息
m_bFlag=false; // 记录集获取失败
}
return m_pRecordset; // 返回记录集
}
//------------------------------------------------------------------------------------------------------------
// 执行SQL语句,对应Insert Update delete语句 _variant_t
//------------------------------------------------------------------------------------------------------------
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
// 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(); // 释放环境
}
//------------------------------------------------------------------------------------------------------------
// 结束
//------------------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -