adoconnectionevents.h

来自「Visual C++ 实践与提高--数据库篇的源代码。很好的东西。欢迎下载。」· C头文件 代码 · 共 153 行

H
153
字号
// ADOConnectionEvents.h : CADOConnectionEvents
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_ADOCONNECTIONEVENTS_H__281392F0_A02D_11D3_A8CD_00C04F595ED0__INCLUDED_)
#define AFX_ADOCONNECTIONEVENTS__281392F0_A02D_11D3_A8CD_00C04F595ED0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <adoint.h>

/////////////////////////////////////////////////////////////////////////////
// CADOConnectionEvents

class CADOConnectionEvents : public ConnectionEventsVt
{
public :
	ULONG m_ulRefCount;
	CADOConnectionEvents():m_ulRefCount(0){}
	
	STDMETHOD(QueryInterface)(REFIID iid, LPVOID* ppvObject)
	{
		if(IsEqualIID(__uuidof(IUnknown), iid) || 
			IsEqualIID(__uuidof(ConnectionEventsVt), iid)) 
		{
			*ppvObject = this;
			AddRef();
			return S_OK;
		}
		else 
			return E_NOINTERFACE;
	}
	//引用计数机制
	STDMETHOD_(ULONG, AddRef)()
	{
		return m_ulRefCount++;
	}
	
	STDMETHOD_(ULONG, Release)()
	{
		if (--m_ulRefCount == 0)
		{
			delete this;
			return 0;
		}
		else 
			return m_ulRefCount;
	}
		
	//Informational — 关于当前操作有附加信息的通知
	STDMETHOD(InfoMessage)( 
		ADOError* pError,
		EventStatusEnum* adStatus,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
	//在 BeginTrans 操作后调用
	STDMETHOD(BeginTransComplete)( 
		LONG TransactionLevel,
		ADOError* pError,
		EventStatusEnum* adStatus,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
	//在 CommitTrans 操作后调用
	STDMETHOD(CommitTransComplete)( 
		ADOError* pError,
		EventStatusEnum* adStatus,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
	//在 RollbackTrans 操作后调用
    STDMETHOD(RollbackTransComplete)( 
		ADOError* pError,
		EventStatusEnum* adStatus,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
	//该方法在对该连接执行挂起命令之前调用,
	//并允许用户检查和修改挂起的执行参数
    STDMETHOD(WillExecute)( 
		BSTR* Source,
		CursorTypeEnum* CursorType,
		LockTypeEnum* LockType,
		long* Options,
		EventStatusEnum* adStatus,
		_ADOCommand* pCommand,
		_ADORecordset* pRecordset,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
    }   
	//该方法在命令执行完成后调用
	STDMETHOD(ExecuteComplete)( 
		LONG RecordsAffected,
		ADOError* pError,
		EventStatusEnum* adStatus,
		_ADOCommand* pCommand,
		_ADORecordset* pRecordset,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
	//该方法在连接启动前调用。在挂起连接中使用的参数将作
	//为输入参数提供,并可在方法返回之前进行修改。该方法
	//可以返回取消挂起连接的请求。
	STDMETHOD(WillConnect)( 
		BSTR* ConnectionString,
		BSTR* UserID,
		BSTR* Password,
		long* Options,
		EventStatusEnum* adStatus,
		_ADOConnection* pConnection) 
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
		
	//方法在连接开始后调用
	STDMETHOD(ConnectComplete)( 
		ADOError* pError,
		EventStatusEnum* adStatus,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
		
	//方法在连接结束后调用
    STDMETHOD(Disconnect)( 
		EventStatusEnum* adStatus,
		_ADOConnection* pConnection)
	{
		*adStatus = adStatusUnwantedEvent; 
		return S_OK;
	}
};

/////////////////////////////////////////////////////////////////////////////

#endif // !defined(AFX_ADOCONNECTIONEVENTS__281392F0_A02D_11D3_A8CD_00C04F595ED0__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?