www.pudn.com > ACEProactor.rar > ADOOperation.cpp, change:2006-01-23,size:2488b
// ADOOperation.cpp: implementation of the ADOOperation class.
//
//////////////////////////////////////////////////////////////////////
#include "ADOOperation.h"
#include <comdef.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADOOperation::ADOOperation()
{
init();
}
ADOOperation::~ADOOperation()
{
release();
}
void ADOOperation::init()
{
m_pConnect.CreateInstance(__uuidof(Connection));
m_pRecordsetPtr.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));
}
void ADOOperation::release()
{
}
_RecordsetPtr ADOOperation::SelectSQL( char* szSQL)
{
try
{
CloseRecordSet();
m_pRecordsetPtr->Open(szSQL, // 查询DemoTable表中所有字段
m_pConnect.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error& e)
{
}
catch (...)
{
}
return m_pRecordsetPtr;
}
BOOL ADOOperation::DeleteRecordSet( char* szSQL )
{
mutex_.acquire();
try
{
m_pCommand->ActiveConnection = m_pConnect;
m_pCommand->CommandText = szSQL;
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数
m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///
}
catch(_com_error& e)
{
}
catch (...)
{
}
mutex_.release();
return TRUE;
}
_RecordsetPtr ADOOperation::SelectSQL( vector<char*> arrFields , char* szTable , char* szIDFieldName , char* szID )
{
char szSQL[MAX_SQL_SIZE];
memset(szSQL,0,MAX_SQL_SIZE);
char szField[MAX_SQL_FIELD];
memset(szField,0,MAX_SQL_FIELD);
int nCurrentOffset=0;
for (int i=0;i<arrFields.size();i++)
{
memcpy(szField+nCurrentOffset,arrFields[i],strlen(arrFields[i]));
nCurrentOffset+=strlen(arrFields[i]);
szField[nCurrentOffset++]=',';
}
szField[nCurrentOffset]='\0';
sprintf("select %s from %s where %s = '%s' ;",szField,szTable,szIDFieldName,szID);
try
{
CloseRecordSet();
m_pRecordsetPtr->Open(szSQL, // 查询DemoTable表中所有字段
m_pConnect.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error& e)
{
}
catch (...)
{
}
return m_pRecordsetPtr;
}
void ADOOperation::CloseRecordSet()
{
//关闭记录集
if (m_pRecordsetPtr->State==adStateOpen)
{
m_pRecordsetPtr->Close();
}
}