tuiliji/GenAlogrithm/ABDBUtil.cpp

127 lines
1.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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;
}