// ADODBUtil.cpp: implementation of the CADODBUtil class. // ////////////////////////////////////////////////////////////////////// #include "ABDBUtil.h" #include 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; }