【VC开源代码栏目提醒】:网学会员为广大网友收集整理了,ADOWin32ConsoleCaptureEvent.cpp,希望对大家有所帮助!
// ADOWin32ConsoleCaptureEvent.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#undef EOF
#import "c:\program files\common files\system\ado\msado15.dll"
HRESULT SetConnectionEvents(ADODB::_ConnectionPtr & spConn);
HRESULT SetRSEvents(ADODB::_RecordsetPtr & spRS);
HRESULT ClearRSEvents(ADODB::_RecordsetPtr & spRS);
HRESULT ClearConnectionEvents(ADODB::_ConnectionPtr & spConn);
#include "ADORSEvts.h"
#include "ADOConnEvts.h"
class CCnEvents: public CADOConnectionEvents
{
public:
STDMETHOD(InfoMessage)(
ADOError * pError,
EventStatusEnum * adStatus,
_ADOConnection * pConnection)
{
printf("InfoMessage event fired.\n");
return S_OK;
}
STDMETHOD(BeginTransComplete)(
LONG TransactionLevel,
ADOError * pError,
EventStatusEnum * adStatus,
_ADOConnection * pConnection)
{
printf("BeginTransComplete event fired.\n");
return S_OK;
}
STDMETHOD(CommitTransComplete)(
ADOError * pError,
EventStatusEnum * adStatus,
_ADOConnection * pConnection)
{
printf("CommitTransComplete event fired.\n");
return S_OK;
}
STDMETHOD(RollbackTransComplete)(
ADOError * pError,
EventStatusEnum * adStatus,
_ADOConnection * pConnection)
{
printf("RollbackTransComplete event fired.\n");
return S_OK;
}
STDMETHOD(WillExecute)(
BSTR * Source,
CursorTypeEnum * CursorType,
LockTypeEnum * LockType,
long * Options,
EventStatusEnum * adStatus,
_ADOCommand * pCommand,
_ADORecordset * pRecordset,
_ADOConnection * pConnection)
{
printf("WillExecute event fired.\n");
return S_OK;
}
STDMETHOD(ExecuteComplete)(
LONG RecordsAffected,
ADOError * pError,
EventStatusEnum * adStatus,
_ADOCommand * pCommand,
_ADORecordset * pRecordset,
_ADOConnection * pConnection)
{
printf("ExecuteComplete event fired.\n");
return S_OK;
}
STDMETHOD(WillConnect)(
BSTR * ConnectionString,
BSTR * UserID,
BSTR * Password,
long * Options,
EventStatusEnum * adStatus,
_ADOConnection *pConnection)
{
printf("WillConnect event fired.\n");
return S_OK;
}
STDMETHOD(ConnectComplete)(
ADOError * pError,
EventStatusEnum * adStatus,
_ADOConnection * pConnection)
{
printf("ConnectComplete event fired.\n");
return S_OK;
}
STDMETHOD(Disconnect)(
EventStatusEnum * adStatus,
_ADOConnection * pConnection)
{
printf("Disconnect event fired.\n");
return S_OK;
}
};
class CRSEvents: public CADORecordsetEvents
{
public:
STDMETHOD(WillChangeField)(
LONG cFields,
VARIANT Fields,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("WillChangeField event fired.\n");
return S_OK;
}
STDMETHOD(FieldChangeComplete)(
LONG cFields,
VARIANT Fields,
ADOError *pError,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("FieldChangeComplete event fired.\n");
return S_OK;
}
STDMETHOD(WillChangeRecord)(
EventReasonEnum adReason,
LONG cRecords,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("WillChangeRecord event fired.\n");
return S_OK;
}
STDMETHOD(RecordChangeComplete)(
EventReasonEnum adReason,
LONG cRecords,
ADOError *pError,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("RecordChangeComplete event fired.\n");
return S_OK;
}
STDMETHOD(WillChangeRecordset)(
EventReasonEnum adReason,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("WillChangeRecordset event fired.\n");
return S_OK;
}
STDMETHOD(RecordsetChangeComplete)(
EventReasonEnum adReason,
ADOError *pError,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("RecordsetChangeComplete event fired.\n");
return S_OK;
}
STDMETHOD(WillMove)(
EventReasonEnum adReason,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("WillMove event fired.\n");
return S_OK;
}
STDMETHOD(MoveComplete)(
EventReasonEnum adReason,
ADOError *pError,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("MoveComplete event fired.\n");
return S_OK;
}
STDMETHOD(EndOfRecordset)(
VARIANT_BOOL *fMoreData,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("EndOfRecordset event fired.\n");
return S_OK;
}
STDMETHOD(FetchProgress)(
long Progress,
long MaxProgress,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("FecthProgress event fired.\n");
return S_OK;
}
STDMETHOD(FetchComplete)(
ADOError *pError,
EventStatusEnum *adStatus,
_ADORecordset *pRecordset)
{
printf("FetchComplete event fired.\n");
return S_OK;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
ADODB::_ConnectionPtr spConn(__uuidof(ADODB::Connection));
ADODB::_RecordsetPtr spRS(__uuidof(ADODB::Recordset));
SetConnectionEvents(spConn);
spConn->Open(L"DSN=AccessTest", L"", L"", -1L);
SetRSEvents(spRS);
spRS->Open(L"Select * from Table1", spConn.GetInterfacePtr(), ADODB::adOpenKeyset, ADODB::adLockOptimistic, -1);
spRS->MoveFirst();
spRS->MoveNext();
spRS->Close();
spConn->Close();
ClearRSEvents(spRS);
ClearConnectionEvents(spConn);
return 0;
}
DWORD gdwEvtClass;
DWORD gdwCnEvents;
HRESULT SetConnectionEvents(ADODB::_ConnectionPtr & spConn)
{
IConnectionPointContainer *pCPC = NULL;
IConnectionPoint *pCP = NULL;
HRESULT hr;
hr = spConn->QueryInterface(IID_IConnectionPointContainer, (LPVOID *) &pCPC);
if (FAILED(hr))
return hr;
hr = pCPC->FindConnectionPoint(__uuidof(ConnectionEvents), &pCP);
pCPC->Release();
if (FAILED(hr))
return hr;
hr = pCP->Advise(new CCnEvents, &gdwCnEvents);
pCP->Release();
return hr;
}
HRESULT SetRSEvents(ADODB::_RecordsetPtr & spRS)
{
HRESULT hr;
IConnectionPointContainer *pCPC = NULL;
IConnectionPoint *pCP = NULL;
hr = spRS->QueryInterface(IID_IConnectionPointContainer, (LPVOID *)&pCPC);
if (FAILED(hr))
return hr;
hr = pCPC->FindConnectionPoint(__uuidof(RecordsetEvents), &pCP);
pCPC->Release();
if (FAILED(hr))
return hr;
hr = pCP->Advise(new CRSEvents, &gdwEvtClass); //Turn on event support.
pCP->Release();
return hr;
}
HRESULT ClearRSEvents(ADODB::_RecordsetPtr & spRS)
{
HRESULT hr;
IConnectionPointContainer *pCPC = NULL;
IConnectionPoint *pCP = NULL;
hr = spRS->QueryInterface(IID_IConnectionPointContainer, (LPVOID *)&pCPC);
if (FAILED(hr))
return hr;
hr = pCPC->FindConnectionPoint(__uuidof(RecordsetEvents), &pCP);
pCPC->Release();
if (FAILED(hr))
return hr;
hr = pCP->Unadvise(gdwEvtClass);
pCP->Release();
return hr;
}
HRESULT ClearConnectionEvents(ADODB::_ConnectionPtr & spConn)
{
IConnectionPointContainer *pCPC = NULL;
上一篇:
ADOTranDlg.cpp
下一篇:
计算机毕业论文答辩2014年