tuiliji/GenAlogrithm/ADOConn.cpp

158 lines
2.9 KiB
C++
Raw Permalink Normal View History

#include"ADOConn.h"
#include<iostream>
ADOConn::ADOConn(void)
{
}
ADOConn::~ADOConn(void)
{
}
void ADOConn::OnInitADOConn(_bstr_t add)
{
//<2F><>ʼ<EFBFBD><CABC>ole/com<6F><EFBFBD><E2BBB7>
::CoInitialize(NULL);
try
{
//<2F><><EFBFBD><EFBFBD>connection<6F><6E><EFBFBD><EFBFBD>
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");
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
//m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=lolic.accdb;Persist Security Info=False ", "", "", adModeUnknown);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
}
//<2F><>׽<EFBFBD>
catch (_com_error e)
{
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
cout << e.Description() << endl;
}
}
void ADOConn::ExitConnect(void)
{
//<2F>رռ<D8B1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
//<2F>ͷŻ<CDB7><C5BB><EFBFBD>
::CoUninitialize();
}
void ADOConn::GetRecordSet(_bstr_t bstrSql, int c)
{
try
{
if (!Query((_bstr_t)bstrSql))
{
//ִ<><D6B4>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
cout << "<EFBFBD><EFBFBD><EFBFBD>󣡣<EFBFBD><EFBFBD><EFBFBD>\n" << endl;
return ;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣬<DDBF><E2A3AC><EFBFBD><EFBFBD>connection<6F>ǿգ<C7BF><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (m_pConnection == NULL)
OnInitADOConn(add1);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
m_pRecordset.CreateInstance(__uuidof(Recordset));
//ȡ<>ñ<EFBFBD><C3B1>еļ<D0B5>¼
m_pRecordset->Open(bstrSql, m_pConnection.GetInterfacePtr(), adOpenDynamic,
adLockOptimistic, adCmdText);
}
catch (_com_error e)
{
cout << e.Description() << endl;
}
search = m_pRecordset;//<2F><><EFBFBD>ؼ<EFBFBD>¼<EFBFBD><C2BC>
}
bool ADOConn::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)
OnInitADOConn(add1);
//<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;
}
}
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
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣬<DDBF><E2A3AC><EFBFBD><EFBFBD>connection<6F>ǿգ<C7BF><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (m_pConnection == NULL)
OnInitADOConn(add1);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
m_pRecordset.CreateInstance(__uuidof(Recordset));
//ȡ<>ñ<EFBFBD><C3B1>еļ<D0B5>¼
m_pRecordset->Open(bstrSql, m_pConnection.GetInterfacePtr(), adOpenDynamic,
adLockOptimistic, adCmdText);
}
catch (_com_error e)
{
cout << e.Description() << endl;
}
//<2F><><EFBFBD>ؼ<EFBFBD>¼<EFBFBD><C2BC>
return m_pRecordset;
}
bool ADOConn::ExecuteSQL(_bstr_t bstrSql)
{
_variant_t recordsAffected;
try
{
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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;
}