• 大小: 206KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: C/C++
  • 标签: C++  SQLServer  

资源简介

C++ADO连接SQLServer封装类,实现类的封装方便使用

资源截图

代码片段和文件信息

#include “stdafx.h“
#include 
#include “ADO.h“

CADO::CADO(void)
{
CoInitialize(NULL);
m_bTransactionerror = false;
m_bTransaction = false;
m_lRecordCount = 0;

m_pConn.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));

m_strDb = “127.0.0.11433“;
m_strUser = “sa“;
m_strPsw = “test“;
}


CADO::~CADO(void)
{
  Close();
  m_pRecordset.Release();
  m_pConn.Release();
CoUninitialize();
}

bool CADO::Close(void)
{
if (m_pConn == NULL || !IsOpen())
return false;

m_pConn->Close();

return true;
}

bool CADO::Connect(void)
{
string conData = “Provider=SQLOLEDB;Server=“;
conData += m_strDb;
conData += “;uid=“;
conData += m_strUser;
conData += “;pwd=“;
conData += m_strPsw;
// conData += “;database=ASPlatConfigDB;“;

try
{
HRESULT hRet = m_pConn->Open(conData.c_str()““““adConnectUnspecified);
if(!SUCCEEDED(hRet))
return false;
}
catch(_com_error &comError)
{
dump_com_error(comError);
return false;
}
return true;
}


bool CADO::IsOpen(void)
{
try
{
return (m_pConn != NULL && (m_pConn->State & adStateOpen));
}
catch(_com_error &e)
{
dump_com_error(e);
}
return false;
}


void CADO::dump_com_error(_com_error &e)
{
string ErrorStr;
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
ErrorStr = “MAdoDatabase Error=“;
ErrorStr += “\n\tSource =“;
ErrorStr += (LPCSTR)bstrSource;
ErrorStr += “\n\tDescripiion =“;
ErrorStr += (LPCSTR)bstrDescription;
}

bool CADO::Execute(const string &exec)
{
if( m_pConn == NULL || exec.empty() || !IsOpen() )
return false;
try
{
if (m_bTransaction && m_bTransactionerror)
return false;

m_pConn->Execute( exec.c_str()NULLadExecuteNoRecords );
return true;
}
catch(_com_error &e)
{
if (m_bTransaction)
{
m_bTransactionerror = true;
}
dump_com_error(e);
}
return false;
}

_RecordsetPtr CADO::Query(const string &CommandStr VARIANT * RecordsAffected /* = NULL */)
{

try
{
if (!IsOpen())
return NULL;

m_pRecordset = m_pConn->Execute(CommandStr.c_str() RecordsAffected adModeUnknown);
m_lRecordCount = GetRecordCount(m_pRecordset);
return m_pRecordset;
}
catch (_com_error& e)
{
dump_com_error(e);
return NULL;
}
}


long CADO::BeginTransaction(void)
{
if(m_pConn==NULL) 
return -1;
try
{
m_bTransaction = true;
long lRet = m_pConn->BeginTrans();
m_bTransactionerror = false;
return lRet;
}
catch(_com_error &e)
{
dump_com_error(e);
m_bTransactionerror = true;
return -1;
}
return -1;
}

bool CADO::EndTransaction(void)
{
if(m_pConn == NULL)
return false;

try
{
bool bRet = false;
if (m_bTransactionerror)
{
m_pConn->RollbackTrans();
bRet = false;
}
else
{
bRet = SUCCEEDED(m_pConn->CommitTrans());
}

m_bTransactionerror = false;
m_bTransaction =

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6473  2012-10-31 13:54  ADO\ADO.cpp

     文件       1525  2012-10-31 13:55  ADO\ADO.h

     文件     536576  2011-08-13 16:06  ADO\msado15.dll

     目录          0  2012-10-31 13:55  ADO

----------- ---------  ---------- -----  ----

               544574                    4


评论

共有 条评论