⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 axlib.h

📁 一个非常好用的ADO封装类,程序员不再需要跟烦人的COM接口打交道,写数据库程序不再麻烦!
💻 H
📖 第 1 页 / 共 3 页
字号:

/////////////////////////////////////////////////////////////////////////////
// CAxException class
// Desc:
//
  class CAxException //: public CException
  {
    //Construction
    public:
	  CAxException();
	  ~CAxException();

    //Attributes
    public:
	  long		       m_nErrorNo;
	  CString 	     m_szErrorDesc;

    protected:
	  ADOErrors	    *m_pErrors;
	  ADOError	    *m_pError;
	  long		       m_nErrorCount;

	  int		         m_nAxLibError;
	  SCODE	         m_scode;
	  static         LPTOP_LEVEL_EXCEPTION_FILTER m_previousFilter;
    static         unexpected_handler  m_prevTerm;

    //Implementation
    public:
	  void           GetErrorsCollection();
	  void           GetErrorInfo();
	  void           SetError(int nError) { m_nAxLibError = nError; }
	  void           SetAScode(SCODE sc) { m_scode = sc; }
    SCODE          GetAScode() { return (m_scode); }
    static void    UnhandledException();

    protected:
	  static LONG WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo);
	  static LPTSTR  GetExceptionString(DWORD dwCode);
	  static bool    GetLogicalAddress(PVOID addr, PTSTR szModule, 
                      DWORD len, DWORD& section, DWORD& offset);
  }; // class CAxException


/////////////////////////////////////////////////////////////////////////////
// CAxConnectionEvents class
// Desc:
//
  class CAxConnectionEvents : public ConnectionEventsVt
  {
   public :

      ULONG m_ulRefCount;
      CAxConnectionEvents():m_ulRefCount(1){}

      STDMETHOD(QueryInterface)(REFIID iid, LPVOID * ppvObject)
      {
        if (IsEqualIID(__uuidof(IUnknown), iid) ||
            IsEqualIID(__uuidof(ConnectionEventsVt), iid))
        {
          *ppvObject = this;
          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;
      }


      STDMETHOD(InfoMessage)(
               ADOError * pError,
               EventStatusEnum * adStatus,
               _ADOConnection * pConnection)
      {
        *adStatus = adStatusUnwantedEvent;
        return S_OK;
      }


      STDMETHOD(BeginTransComplete)(
               LONG TransactionLevel,
               ADOError * pError,
               EventStatusEnum * adStatus,
               _ADOConnection * pConnection)
      {
        *adStatus = adStatusUnwantedEvent;
        return S_OK;
      }


      STDMETHOD(CommitTransComplete)(
               ADOError * pError,
               EventStatusEnum * adStatus,
               _ADOConnection * pConnection)
      {
         *adStatus = adStatusUnwantedEvent;
         return S_OK;
      }


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

  };


/////////////////////////////////////////////////////////////////////////////
// CAxRecordsetEvents class
// Desc:
//
  class CAxRecordsetEvents : public RecordsetEventsVt 
  {
  public:
    ULONG m_ulRefCount;
    CAxRecordsetEvents():m_ulRefCount(1){}

    STDMETHOD(QueryInterface)(REFIID iid, LPVOID * ppvObject)
    {
      if (IsEqualIID(__uuidof(IUnknown), iid) || 
        IsEqualIID(__uuidof(RecordsetEventsVt), iid))
      {
         *ppvObject = this;
         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;
   }


   STDMETHOD(WillChangeField)( LONG cFields, 
                               VARIANT Fields, 
                               EventStatusEnum *adStatus,
                               _ADORecordset *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(FieldChangeComplete)( LONG cFields,
                                   VARIANT Fields,
                                   ADOError *pError,
                                   EventStatusEnum *adStatus,
                                   _ADORecordset *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(WillChangeRecord)( EventReasonEnum adReason,
                                LONG cRecords,
                                EventStatusEnum *adStatus,
                                _ADORecordset *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(RecordChangeComplete)( EventReasonEnum adReason,
                                    LONG cRecords,
                                    ADOError  *pError,
                                    EventStatusEnum  *adStatus,
                                    _ADORecordset  *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(WillChangeRecordset)( EventReasonEnum adReason,
                                   EventStatusEnum *adStatus,
                                   _ADORecordset  *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(RecordsetChangeComplete)( EventReasonEnum adReason,
                                       ADOError *pError,
                                       EventStatusEnum  *adStatus,
                                       _ADORecordset  *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(WillMove)( EventReasonEnum adReason,
                        EventStatusEnum  *adStatus,
                        _ADORecordset  *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(MoveComplete)( EventReasonEnum adReason,
                            ADOError *pError,
                            EventStatusEnum *adStatus,
                            _ADORecordset  *pRecordset)
   {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(EndOfRecordset)( VARIANT_BOOL *fMoreData,
                              EventStatusEnum *adStatus,
                              _ADORecordset *pRecordset) {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(FetchProgress)( long Progress,
                             long MaxProgress,
                             EventStatusEnum *adStatus,
                             _ADORecordset *pRecordset) {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }

   STDMETHOD(FetchComplete)( ADOError *pError,
                             EventStatusEnum *adStatus,
                             _ADORecordset *pRecordset) {
      *adStatus = adStatusUnwantedEvent; 
      return S_OK;
   }
  };
}

#endif	// !_AXLIB_H_

⌨️ 快捷键说明

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