/**********************************************************************
**
** Filename : OLEDBException.h
**
** Contents : Include file for OLEDBException exception
**
**********************************************************************/
#pragma once


class COLEDBException : public CException
{
public:
    COLEDBException(HRESULT hr);
    COLEDBException(const CDataSource& DataSource, HRESULT hr);
    COLEDBException(CSession& Session, HRESULT hr);
    COLEDBException(IUnknown* pIUnknown, HRESULT hr);

    virtual ~COLEDBException();

    virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError, PUINT pnHelpContext = NULL);
    virtual CString GetErrorMessage() { return m_strDBError ; }
    virtual HRESULT GetErrorNo() { return m_hr ; }

private:
    HRESULT m_hr;
    CString m_strHRESULT;
    CString m_strDBError;

    void InitialiseMembers(HRESULT hr);
    void GetExtendedErrorInfo();
};