127 lines
1.9 KiB
C++
127 lines
1.9 KiB
C++
// 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()
|
||
{
|
||
//初始化ole/com库环境
|
||
// AfxOleInit();
|
||
::CoInitialize(NULL);
|
||
HRESULT hr;
|
||
|
||
try
|
||
{
|
||
//创建Connection
|
||
hr=m_pConnection.CreateInstance("ADODB.Connection");
|
||
|
||
//设置链接字符串,必须是BSTR或者_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);
|
||
}
|
||
|
||
}
|
||
|
||
//捕捉异常
|
||
catch (_com_error e)
|
||
{
|
||
;
|
||
}
|
||
}
|
||
|
||
bool CABDBUtil::Query(_bstr_t bstrSQL)
|
||
{
|
||
try
|
||
{
|
||
//链接数据库,如果connection对象空,则重新链接数据库
|
||
if (m_pConnection==NULL)
|
||
InitADOConnect();
|
||
|
||
//创建记录集对象
|
||
m_pRecordset.CreateInstance(_uuidof(Recordset));
|
||
|
||
|
||
//取得标准记录
|
||
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
|
||
{
|
||
//是否以及链接数据库
|
||
if (m_pConnection==NULL)
|
||
InitADOConnect();
|
||
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
|
||
return true;
|
||
}
|
||
catch (_com_error e)
|
||
{
|
||
|
||
return false;
|
||
|
||
}
|
||
}
|
||
|
||
void CABDBUtil::ExitConnect()
|
||
{
|
||
//关闭记录集和连接
|
||
if(m_pRecordset!=NULL)
|
||
m_pRecordset->Close();
|
||
m_pConnection->Close();
|
||
::CoUninitialize();//是放环境
|
||
}
|
||
|
||
|
||
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;
|
||
} |