tuiliji/GenAlogrithm/ABDBUtil.cpp

127 lines
1.9 KiB
C++
Raw Normal View History

// ADODBUtil.cpp: implementation of the CADODBUtil class.
//
//////////////////////////////////////////////////////////////////////
#include "ABDBUtil.h"
#include <string>
CABDBUtil* CABDBUtil::m_Instance = NULL;
CABDBUtil::CABDBUtil()
{
InitADOConnect();
}
CABDBUtil::~CABDBUtil()
{
ExitConnect();
}
void CABDBUtil::InitADOConnect()
{
//<2F><>ʼ<EFBFBD><CABC>ole/com<6F><EFBFBD><E2BBB7>
// AfxOleInit();
::CoInitialize(NULL);
HRESULT hr;
try
{
//<2F><><EFBFBD><EFBFBD>Connection
hr=m_pConnection.CreateInstance("ADODB.Connection");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BSTR<54><52><EFBFBD><EFBFBD>_bstr_t
if(SUCCEEDED(hr))
{
_bstr_t FileName = ".\\AllData.mdb";
_bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +FileName;
hr=m_pConnection->Open(strConnect,"","",adModeUnknown);
}
}
//<2F><>׽<EFBFBD>
catch (_com_error e)
{
;
}
}
bool CABDBUtil::Query(_bstr_t bstrSQL)
{
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣬<DDBF><E2A3AC><EFBFBD><EFBFBD>connection<6F><6E><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (m_pConnection==NULL)
InitADOConnect();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pRecordset.CreateInstance(_uuidof(Recordset));
//ȡ<>ñ<EFBFBD>׼<EFBFBD><D7BC>¼
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
return true;
}
catch (_com_error e)
{
return false;
}
}
bool CABDBUtil::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
//<2F>Ƿ<EFBFBD><C7B7>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (m_pConnection==NULL)
InitADOConnect();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch (_com_error e)
{
return false;
}
}
void CABDBUtil::ExitConnect()
{
//<2F>رռ<D8B1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
::CoUninitialize();//<2F>ǷŻ<C7B7><C5BB><EFBFBD>
}
void CABDBUtil::Release()
{
if (m_Instance)
{
delete m_Instance;
m_Instance = NULL;
}
}
CABDBUtil* CABDBUtil::GetInstance()
{
if (m_Instance==NULL)
{
m_Instance = new CABDBUtil();
}
return m_Instance;
}
std::string CABDBUtil::GetLastError()
{
return m_LastError;
}