Archive for 3月 26th, 2012

  1. Hello, DAO(MFC) World!

    Posted on 3月 26th, 2012 by cx20

    DAO(MFC)

    MFC(Microsoft Foundation Class)は、Visual C++ 用のクラスライブラリである。
    MFC DAO クラスは、DAO(Data Access Object)のラップクラスとして実装されている。
    現在、DAO クラスは既存のアプリケーションの保守の為だけに残されており、新しいプロジェクトでは ODBC クラスが推奨されている。
    なお、x64 プラットフォームでは DAO クラスはサポートされておらず、コンパイルエラーとなる。

    ソースコード(VC + MFC + DAO + Jet データベース)

    #include <afx.h>
    #include <afxdao.h>
     
    int _tmain( int argc, TCHAR* argv[] )
    {
        CDaoDatabase db;
        db.Open( _T("hello.mdb") );
     
        CDaoRecordset rs( &db );
        CString strSQL = _T("SELECT 'Hello, DAO(MFC) World!' AS Message");
        rs.Open(dbOpenDynaset, strSQL, dbReadOnly);
     
        while ( !rs.IsEOF() )
        {
            COleVariant varValue = rs.GetFieldValue( 0 );
            _tprintf( _T("%sn"), V_BSTRT( &varValue ) );
            rs.MoveNext();
        }
     
        rs.Close();
        db.Close();
     
        return 0;
    }

    ソースコード(VC + MFC + DAO + ODBC + SQL Server)

    #include <afx.h>
    #include <afxdao.h>
     
    int _tmain( int argc, TCHAR* argv[] )
    {
        CDaoDatabase db;
        db.Open( _T(""), FALSE, FALSE, 
            _T("Driver={SQL Server};SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd") );
     
        CDaoRecordset rs( &db );
        CString strSQL = _T("SELECT 'Hello, DAO(MFC) World!' AS Message");
        rs.Open(dbOpenDynaset, strSQL, dbReadOnly);
     
        while ( !rs.IsEOF() )
        {
            COleVariant varValue = rs.GetFieldValue( 0 );
            _tprintf( _T("%sn"), V_BSTRT( &varValue ) );
            rs.MoveNext();
        }
     
        rs.Close();
        db.Close();
     
        return 0;
    }

    ソースコード(VC + MFC + DAO + ODBC + Oracle)

    #include <afx.h>
    #include <afxdao.h>
     
    int _tmain( int argc, TCHAR* argv[] )
    {
        CDaoDatabase db;
        db.Open( _T(""), FALSE, FALSE, 
            _T("ODBC;Driver={Oracle in OraDb11g_home1};DBQ=ORCL;UID=scott;PWD=tiger;") );
     
        CDaoRecordset rs( &db );
        CString strSQL = _T("SELECT 'Hello, DAO(MFC) World!' AS Message");
        rs.Open(dbOpenDynaset, strSQL, dbReadOnly);
     
        while ( !rs.IsEOF() )
        {
            COleVariant varValue = rs.GetFieldValue( 0 );
            _tprintf( _T("%sn"), V_BSTRT( &varValue ) );
            rs.MoveNext();
        }
     
        rs.Close();
        db.Close();
     
        return 0;
    }

    コンパイル&リンク方法(Visual C++)

    C:¥> cl hello.cpp

    実行結果

    Hello, DAO(MFC) World!