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(); 
	} 
}