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

📄 adoconn.cpp

📁 用ADO+CListCtrl操作SQL的示例程序
💻 CPP
字号:
// ADOConn.cpp: implementation of the ADOConn class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "AdoST.h"
#include "ADOConn.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ADOConn::ADOConn()
{

}

ADOConn::~ADOConn()
{

}

void ADOConn::OnInitADOConn()
{
	 // 初始化OLE/COM库环境
	 ::CoInitialize(NULL);   
	 try
	 {
		  // 创建Connection对象
		  m_pConnection.CreateInstance("ADODB.Connection");
		  // 设置连接字符串,必须是BSTR型或者_bstr_t类型
		  //_bstr_t strConnect = "Provider=SQLOLEDB;Server=127.0.0.1;Database=basename;uid=sa;pwd=pwd;";
		  _bstr_t strConnect = "Provider=SQLOLEDB;Server=172.17.252.148;Database=pubs;uid=sa;pwd=""";
		  m_pConnection->Open(strConnect,"","",adModeUnknown);
	 }
	 // 捕捉异常
	 catch(_com_error e)
	 {
		  AfxMessageBox("数据库连接失败,请开启数据库服务!");
			 PostQuitMessage(0);
		  //AfxMessageBox(e.Description());
	 }
}

void ADOConn::ExitConnect()
{
	 // 关闭记录集和连接
	 if(m_pRecordset!=NULL)
	 m_pRecordset->Close();
	 m_pConnection->Close();
	 // 释放环境
	 ::CoUninitialize();
}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
	 try
	 {
		  // 连接数据库,如果Connection对象为空,则重新连接数据库
		  if(m_pConnection==NULL)
			OnInitADOConn();
		  // 创建记录集对象
		  m_pRecordset.CreateInstance(__uuidof(Recordset));
		  // 取得表中的记录
		  m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	 }
	 // 捕捉异常
	 catch(_com_error e)
	 {
		  AfxMessageBox("数据库记录读取失败!");
			 PostQuitMessage(0);
		  // 显示错误信息
		  //AfxMessageBox(e.Description());
	 }
	 // 返回记录集
	 return m_pRecordset;
}

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
	 _variant_t RecordsAffected;
	 try
	 {
	  // 是否已经连接数据库
	  if(m_pConnection==NULL)
			OnInitADOConn();  
		  // 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("数据库SQL语句执行失败!");
			 PostQuitMessage(0);
		  //AfxMessageBox(e.Description());
	  return false;
	 }

}

⌨️ 快捷键说明

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