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

📄 adoxcloseconnectionx.cpp

📁 visual c++ 很全的ado的sample
💻 CPP
字号:
#import "c:\Program Files\Common Files\system\ado\msadox.dll" \
    no_namespace
#import "c:\Program Files\Common Files\system\ado\msado15.dll"

#include "iostream.h"
#include "stdio.h"
#include "conio.h"

//Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
void CloseConnectionByNothingX(void);
void CloseConnectionX(void);

//////////////////////////////////////////////////////////
//                                                      //
//     Main Function                                    //
//                                                      //
//////////////////////////////////////////////////////////
void main()
{
    if(FAILED(::CoInitialize(NULL)))
        return;

    CloseConnectionByNothingX();

    CloseConnectionX();

    ::CoUninitialize();
}

//////////////////////////////////////////////////////////
//                                                      //
//        CloseConnectionByNothingX Function            //
//                                                      //
//////////////////////////////////////////////////////////
void CloseConnectionByNothingX(void)
{
    HRESULT hr = S_OK;

    // Define ADOX object pointers.
    // Initialize pointers on define.
    // These are in the ADOX::  namespace.

    _CatalogPtr m_pCatalog = NULL;
    _TablePtr m_pTable = NULL;

    //Define ADODB object pointers
    ADODB::_ConnectionPtr m_pCnn = NULL;

    //Define other variables
    _variant_t vIndex = (short) 0;

    try
    {         
        TESTHR(hr = m_pCnn.CreateInstance(__uuidof(ADODB::Connection)));

        TESTHR(hr = m_pCatalog.CreateInstance(__uuidof(Catalog)));
        
        m_pCnn->Open("Provider=Microsoft.Jet.OLEDB.4.0;"
            "Data Source= c:\\Program Files\\Microsoft Office\\"
            "Office\\Samples\\Northwind.mdb;","","",NULL);

        m_pCatalog->PutActiveConnection(_variant_t((IDispatch *)m_pCnn));

        m_pTable = m_pCatalog->Tables->GetItem(vIndex);

        // Cache m_pTable.Type info
        cout << m_pTable->Type << endl; 

        _variant_t vCnn;
        vCnn.vt = VT_DISPATCH;
        vCnn.pdispVal = NULL;
        m_pCatalog->PutActiveConnection(vCnn);

        // m_pTable is orphaned
        cout << m_pTable->Type << endl; 

        // Previous line will succeed if this was cached
        cout << m_pTable->Columns->GetItem(vIndex)->DefinedSize << endl;
        // Previous line will fail if this info has not been cached
    }

    catch(_com_error &e)
    {
        // Notify the user of errors if any.
        _bstr_t bstrSource(e.Source());
        _bstr_t bstrDescription(e.Description());

        printf("\n\tSource :  %s \n\tdescription : %s \n ",(LPCSTR)bstrSource,(LPCSTR)bstrDescription);
    }

    catch(...)
    {
        cout << "Error occured in include files...."<< endl;
    }
}

//////////////////////////////////////////////////////////
//                                                      //
//     CloseConnectionX Function                        //
//                                                      //
//////////////////////////////////////////////////////////
void CloseConnectionX()
{
    HRESULT hr = S_OK;

    // Define ADOX object pointers.
    // Initialize pointers on define.
    // These are in the ADOX::  namespace.

    _CatalogPtr m_pCatalog = NULL;
    _TablePtr m_pTable = NULL;

    //Define ADODB object pointers
    ADODB::_ConnectionPtr m_pCnn = NULL;

    //Define other variables
    _variant_t vIndex = (short) 0;
    try
    {
        TESTHR(hr = m_pCnn.CreateInstance(__uuidof(ADODB::Connection)));
        m_pCnn->Open("Provider=Microsoft.Jet.OLEDB.4.0;"
            "Data Source= c:\\Program Files\\Microsoft Office\\"
            "Office\\Samples\\Northwind.mdb;","","",NULL);

        TESTHR(hr = m_pCatalog.CreateInstance(__uuidof(Catalog)));
        m_pCatalog->PutActiveConnection(_variant_t((IDispatch *)m_pCnn));

        m_pTable = m_pCatalog->Tables->GetItem(vIndex);

        // Cache m_pTable.Type info
        cout << m_pTable->Type << endl;

        m_pCnn->Close();

        // m_pTable is orphaned
        cout << m_pTable->Type << endl;

        // Previous line will succeed if this was cached
        cout << m_pTable->Columns->GetItem(vIndex)->DefinedSize << endl;
        // Previous line will fail if this info has not been cached
    }

    catch(_com_error &e)
    {
        // Notify the user of errors if any.
        _bstr_t bstrSource(e.Source());
        _bstr_t bstrDescription(e.Description());

        printf("\nError\n\tSource :  %s \n\tdescription : %s \n ",
            (LPCSTR)bstrSource,(LPCSTR)bstrDescription);
    }

    catch(...)
    {
        cout << "Error occured in include files...."<< endl;
    }
}

⌨️ 快捷键说明

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