#include"ADOConn.h" #include ADOConn::ADOConn(void) { } ADOConn::~ADOConn(void) { } void ADOConn::OnInitADOConn(_bstr_t add) { //初始化ole/com库环境 ::CoInitialize(NULL); try { //创建connection对象 m_pConnection.CreateInstance("ADODB.Connection"); add1 = add; _bstr_t FileName = add;//".\\AllData.mdb" _bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName; m_pConnection->Open(strConnect, "", "", adModeUnknown); //m_pConnection.CreateInstance("ADODB.Connection"); ////设置连接字符串 //m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=lolic.accdb;Persist Security Info=False ", "", "", adModeUnknown); //设置连接字符串 } //捕捉异常 catch (_com_error e) { //显示错误信息 cout << e.Description() << endl; } } void ADOConn::ExitConnect(void) { //关闭记录集和连接 if (m_pRecordset != NULL) m_pRecordset->Close(); m_pConnection->Close(); //释放环境 ::CoUninitialize(); } void ADOConn::GetRecordSet(_bstr_t bstrSql, int c) { try { if (!Query((_bstr_t)bstrSql)) { //执行失败,返回错误 cout << "错误!!!\n" << endl; return ; } //连接数据库,如果connection是空,则重新连接数据库 if (m_pConnection == NULL) OnInitADOConn(add1); //创建记录对象 m_pRecordset.CreateInstance(__uuidof(Recordset)); //取得表中的记录 m_pRecordset->Open(bstrSql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch (_com_error e) { cout << e.Description() << endl; } search = m_pRecordset;//返回记录集 } bool ADOConn::Query(_bstr_t bstrSQL) { try { //链接数据库,如果connection对象空,则重新链接数据库 if (m_pConnection == NULL) OnInitADOConn(add1); //创建记录集对象 m_pRecordset.CreateInstance(_uuidof(Recordset)); //取得标准记录 m_pRecordset->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); return true; } catch (_com_error e) { return false; } } string ADOConn::search_RES(_variant_t resid) { _bstr_t strRecord; string c; while (!search->adoEOF) { strRecord = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect(resid); c = (string)strRecord; } return c; } _RecordsetPtr ADOConn::GetRecordSet(_bstr_t bstrSql) { try { //连接数据库,如果connection是空,则重新连接数据库 if (m_pConnection == NULL) OnInitADOConn(add1); //创建记录对象 m_pRecordset.CreateInstance(__uuidof(Recordset)); //取得表中的记录 m_pRecordset->Open(bstrSql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch (_com_error e) { cout << e.Description() << endl; } //返回记录集 return m_pRecordset; } bool ADOConn::ExecuteSQL(_bstr_t bstrSql) { _variant_t recordsAffected; try { //数据库是否已连接 if (m_pConnection == NULL) OnInitADOConn(add1); m_pConnection->Execute(bstrSql, NULL, adCmdText); return true; } catch (_com_error e) { cout << e.Description() << endl; return false; } return false; }