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

📄 encaado.cpp

📁 用C++写的数据库软件
💻 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="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=FKSQXT;Data Source=YXA-PC";
		_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();
}

⌨️ 快捷键说明

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