Hello, ODBC(MFC) World!

Posted on 3月 25th, 2012 by cx20

ODBC(MFC)

ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。

ODBCドライバ ファイル
Microsoft Access Driver (*.mdb) ODBCJT32.DLL
Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL
Microsoft Excel Driver (*.xls) ODBCJT32.DLL
Microsoft dBase Driver (*.dbf) ODBCJT32.DLL
Microsoft ODBC for Oracle MSORCL32.DLL
Microsoft Paradox Driver (*.db ) ODBCJT32.DLL
SQL Server SQLSRV32.DLL
Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL
SQL Server Native Client 10.0 SQLNCLI10.DLL

MFC ODBC クラス は、Visual C++ の ODBC クラスライブラリである。

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

#include <afx.h>
#include <afxdb.h>
 
int _tmain( int argc, TCHAR* argv[] )
{
    CDatabase db;
 
    CString strCon = _T("Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb");
    CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message");
 
    db.OpenEx( strCon );
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly, strSQL );
 
    CString strMessage;
 
    while( !rs.IsEOF() )
    {
        rs.GetFieldValue( (short)0, strMessage );
        _tprintf( _T("%sn"), (LPCTSTR)strMessage );
        rs.MoveNext();
    }
    rs.Close();
    db.Close();
 
    return 0;
}

ソースコード(VC + MFC + ODBC + ACE データベース)

#include <afx.h>
#include <afxdb.h>
 
int _tmain( int argc, TCHAR* argv[] )
{
    CDatabase db;
 
    CString strCon = _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\hello.accdb");
    CString strSQL = _T("SELECT 'Hello, ODBC World!' AS Message");
 
    db.OpenEx( strCon );
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly, strSQL );
 
    CString strMessage;
 
    while( !rs.IsEOF() )
    {
        rs.GetFieldValue( (short)0, strMessage );
        _tprintf( _T("%sn"), (LPCTSTR)strMessage );
        rs.MoveNext();
    }
    rs.Close();
    db.Close();
 
    return 0;
}

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

#include <afx.h>
#include <afxdb.h>
 
int _tmain( int argc, TCHAR* argv[] )
{
    CDatabase db;
 
    CString strCon = _T("Driver={SQL Server};SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd");
    CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message");
 
    db.OpenEx( strCon );
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly, strSQL );
 
    CString strMessage;
 
    while( !rs.IsEOF() )
    {
        rs.GetFieldValue( (short)0, strMessage );
        _tprintf( _T("%sn"), (LPCTSTR)strMessage );
        rs.MoveNext();
    }
    rs.Close();
    db.Close();
 
    return 0;
}

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

#include <afx.h>
#include <afxdb.h>
 
int _tmain( int argc, TCHAR* argv[] )
{
    CDatabase db;
 
    CString strCon = _T("Driver={Microsoft ODBC for Oracle};SERVER=ORCL;UID=scott;PWD=tiger");
    CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message FROM DUAL");
 
    db.OpenEx( strCon );
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly, strSQL );
 
    CString strMessage;
 
    while( !rs.IsEOF() )
    {
        rs.GetFieldValue( (short)0, strMessage );
        _tprintf( _T("%sn"), (LPCTSTR)strMessage );
        rs.MoveNext();
    }
    rs.Close();
    db.Close();
 
    return 0;
}

ソースコード(VC + MFC + ODBC + MySQL)

#include <afx.h>
#include <afxdb.h>
 
int _tmain( int argc, TCHAR* argv[] )
{
    CDatabase db;
 
    CString strCon = _T("Driver={MySQL ODBC 5.1 Driver};Server=localhost;UID=root;PWD=P@ssW0rd");
    CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message");
 
    db.OpenEx( strCon );
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly, strSQL );
 
    CString strMessage;
 
    while( !rs.IsEOF() )
    {
        rs.GetFieldValue( (short)0, strMessage );
        _tprintf( _T("%sn"), (LPCTSTR)strMessage );
        rs.MoveNext();
    }
    rs.Close();
    db.Close();
 
    return 0;
}

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

C:¥> cl hello.cpp

実行結果

Message
Hello, ODBC(MFC) World!

Categories: library, MFC, ODBC, SQL

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing