⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adoconn.cpp

📁 功能非常强大的数据采集系统
💻 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 + -