SOL9 2.0 Class: ADOObject

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * ADOObject.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2009/05/10
// 2009/06/02 Modified to support ADOX.

#pragma once
#include <winsock2.h>
#include <ws2tcpip.h>
#include <comdef.h>
//2009/06/02
#import "C:\Program Files\Common Files\system\ado\msadox.dll"

#import "C:\program files\common files\system\ado\msado15.dll" rename("EOF", "adoEOF")

#include <sol/Object.h>
#include <sol/COMError.h>
#include <sol/ArgT.h>
#include <sol/COMTypeConverter.h>
#include <sol/Exception.h>
#include <sol/sql/ADOEnumNames.h>
//2009/06/05
#include <sol/sql/ADOXEnumNames.h>

namespace SOL {

class ADOObject :public Object {

private:
    IDispatchPtr pDispatch;

protected:
    /**
     * Constrctor
     */
    ADOObject()
    :pDispatch(NULL)
    {
    }

protected:
    /**
     * Constrctor
     */
    ADOObject(REFCLSID classId)
    :pDispatch(NULL)
    {
        createInstance(classId);
    }

protected:
    /**
     * Create an instance of COM class of classId.
     */
    HRESULT createInstance(REFCLSID classId) 
    {
        pDispatch = NULL;

        HRESULT hr = pDispatch.CreateInstance(classId);

        if (FAILED(hr)) {
            throw Exception(hr, "%s", __FUNCTION__);
        }
        return hr;
    }

public:
    /**
     * Create an instance of COM class.This is really a virtual function.
     */
    virtual HRESULT createInstance() 
    {
        HRESULT hr = S_OK;
        
        return hr;
    }

public:
    /**
     * Destructor
     */
    ~ADOObject() 
    {
        clear();
    }

public:
    /**
     * Return a pointer to IDISPATCH.
     * Return the pDispatch member if it's not NULL, else throw E_POINTER
     *
     */
    IDispatchPtr getObject() 
    {
        if (pDispatch !=NULL) {
            return pDispatch;
        } else {
            throw Exception(E_POINTER, "%s: %s", "NULL pointer", __FUNCTION__);
        }
    }

public:
    void clear()
    {
        pDispatch = NULL;
    }

public:
    void setObject(IDispatchPtr ptr)
    {
        pDispatch = NULL;
        pDispatch = ptr;
    }

};

}

Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.