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

📄 conndb.cpp

📁 类似于QQ的聊天工具,分为客户端和服务器端,有共享空间,能发布公告,可传输文件
💻 CPP
字号:
#include "Stdafx.h"
#include "connDB.h"

/////////////////////////////////////////////////////////////////////////////
//Connection类的实现
//

//类CConn构造函数
CConn::CConn()
{
	//初始化COM库环境
	::CoInitialize(NULL);

	//初始化Connection指针
	m_Cn.CreateInstance(__uuidof(Connection));
}


//判断连接是否关闭
bool CConn::IsCnClose()
{
	if (m_Cn->State == adStateOpen)
	{
		return false;
	}
	else
	{
		return true;
	}
}


//连接数据库
bool CConn::Open(_bstr_t& cnStr)
{

	if(!IsCnClose())
	{
		m_Cn->Close();
	}
	try
	{
		m_Cn->Open(cnStr,"","", adModeUnknown);
	}
	catch(_com_error err)//捕捉异常
	{
		CString errMsg;
		//errMsg.Format("连接数据库失败!\n\n错误信息:%s", err.ErrorMessage());
		//MessageBox(NULL, errMsg, "连接失败", MB_OK | MB_ICONWARNING);
		return false;
	} 
	return true;
}


//判断是否存在的记录
int CConn::IsExistRs(_bstr_t& strSql)
{
	_RecordsetPtr Rs;
	try
	{
		Rs = m_Cn->Execute(strSql, NULL, adCmdText);
	}

	catch(...)//捕捉异常
	{
		return -1;
	} 
	if(Rs->adoEOF)
	{
		return 0;
	}
	return 1;
}


//执行无返回操作
bool CConn::ExecuteSql(_bstr_t& strSql)
{
	try
	{
		m_Cn->Execute(strSql, NULL, adCmdText);
	}

	catch(_com_error err)//捕捉异常
	{
		//CString errMsg;
		//errMsg.Format("执行SQL操作失败!\n\n错误信息:%s", err.ErrorMessage());
		//MessageBox(NULL, errMsg, "操作失败", MB_OK | MB_ICONWARNING);
		return false;
	} 
	
	return true;
}

//获取活动连接
_ConnectionPtr& CConn::GetActiveConn()
{
	return m_Cn;
}


void CConn::Close()
{
	m_Cn->Close();
	//m_Cn.Release();
}

//关闭连接释放资源
CConn::~CConn()
{
	if(!IsCnClose())
	{
		m_Cn->Close();
	}
	m_Cn.Release();

	//释放COM 资源
	CoUninitialize();
}


//
//END Connection
/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
//Recordset类的实现
//


CRecs::CRecs()
{
	//初始化Recordset指针
	m_Rs.CreateInstance("ADODB.Recordset");
}


//关闭Recordset
void CRecs::CloseRs()
{
	if(m_Rs->State == adStateOpen)
	{
		m_Rs->Close();
	}
}


//执行返回记录集的SQL查询
bool CRecs::Open(_ConnectionPtr& Conn, _variant_t& strSql)
{
	if(Conn->State != adStateOpen)
	{
		//MessageBox(NULL,  "数据库连接还未打开!", "错误", MB_OK | MB_ICONWARNING);
		return false;
	}

	CloseRs();

	try
	{
		m_Rs->Open(strSql, (IDispatch*)Conn, adOpenDynamic, adLockOptimistic, adCmdText); 	
	}
	catch(_com_error err)
	{
		//CString errMsg;
		//errMsg.Format("执行SQL查询失败!\n\n错误信息:%s", err.ErrorMessage());
		//MessageBox(NULL, errMsg, "操作失败", MB_OK | MB_ICONWARNING);
		return false;
	}
	return true;
}


//获取记录集
_RecordsetPtr CRecs::GetRs()
{
	return m_Rs;
}


//关闭Recordset释放资源
CRecs::~CRecs()
{
	CloseRs();
	m_Rs.Release();
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -