ADO数据库连接 封装类(自己总结的)

来源:互联网 发布:进入别人网站数据库 编辑:程序博客网 时间:2024/04/29 22:10


.h文件 

#pragma once
#import "msado15.dll" no_namespace rename("EOF","adoEOF")
class ADOConn
{
public:
 _ConnectionPtr m_pConnection;
 _RecordsetPtr m_pRecordset;
public:
 ADOConn();
 virtual ~ADOConn();
 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
 void OnInitADOConn();
 BOOL ExecuteSQL(_bstr_t bstrSQL);
 void ExitConnect();
};



.cpp文件


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


ADOConn::ADOConn()
{
}


ADOConn::~ADOConn()
{
}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
 try
 {
  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(e.Description());
  ExitConnect();
 }
 return m_pRecordset;
}
void ADOConn::OnInitADOConn()
{
 try
 {
  m_pConnection.CreateInstance(__uuidof(Connection));
  m_pConnection->Open("Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=StudentManage;Data Source=sz", \
   "", "", adModeUnknown);
 }
 catch (_com_error &e)
 {
  AfxMessageBox(e.Description());
  ExitConnect();
 }
}
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
 try
 {
  if (m_pConnection == NULL)
  {
   OnInitADOConn(); //初始化连接对象
  }
  m_pConnection->Execute(bstrSQL, NULL, adCmdText); //执行SQL

  return TRUE;
 }
 catch (_com_error &e)
 {
  AfxMessageBox(e.Description());
  ExitConnect();
 }
 return FALSE;
}
void ADOConn::ExitConnect()
{
 if (m_pRecordset != NULL)
 {
  m_pRecordset->Close(); //关闭记录集
 }
 m_pConnection->Close();  //关闭连接
}

0 0