「MFCとデータベース - データベースの接続」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(Wiki がページ「ODBCでデータベースに接続する」を「ODBCでデータベースに接続する(MFC)」に、リダイレクトを残さずに移動しました)
(文字列「</source>」を「</syntaxhighlight>」に置換)
 
(同じ利用者による、間の2版が非表示)
32行目: 32行目:
== サンプルコード ==
== サンプルコード ==
* <big>'''SQL Serverを使用'''</big>
* <big>'''SQL Serverを使用'''</big>
  <source lang="cpp">
  <syntaxhighlight lang="cpp">
  #include <afx.h>
  #include <afx.h>
  #include <afxdb.h>
  #include <afxdb.h>
60行目: 60行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
* <big>'''Oracle Databaseを使用'''</big>
* <big>'''Oracle Databaseを使用'''</big>
  <source lang="cpp">
  <syntaxhighlight lang="cpp">
  #include <afx.h>
  #include <afx.h>
  #include <afxdb.h>
  #include <afxdb.h>
91行目: 91行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
* <big>'''MySQLを使用'''</big>
* <big>'''MySQLを使用'''</big>
  <source lang="cpp">
  <syntaxhighlight lang="cpp">
  #include <afx.h>
  #include <afx.h>
  #include <afxdb.h>
  #include <afxdb.h>
122行目: 122行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
* <big>'''Jet Databaseを使用'''</big>
* <big>'''Jet Databaseを使用'''</big>
  <source lang="cpp">
  <syntaxhighlight lang="cpp">
  #include <afx.h>
  #include <afx.h>
  #include <afxdb.h>
  #include <afxdb.h>
153行目: 153行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
* <big>'''Ace Databaseを使用'''</big>
* <big>'''Ace Databaseを使用'''</big>
  <source lang="cpp">
  <syntaxhighlight lang="cpp">
  #include <afx.h>
  #include <afx.h>
  #include <afxdb.h>
  #include <afxdb.h>
184行目: 184行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:MFC]]
[[カテゴリ:MFC]]

2021年11月20日 (土) 09:29時点における最新版

概要

ODBC(Open Database Connectivity)は、Microsoft社が提唱したDBMS接続用のAPI仕様である。
DBMSの差異はODBCドライバによって吸収される為、ODBCの手順に従ってプログラムを作成すれば、基本的な差異を意識せずプログラムすることができる。
MFC ODBCクラスは、Visual C++の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



サンプルコード

  • 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;
 }


  • Oracle Databaseを使用
 #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;
 }


  • 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;
 }


  • Jet Databaseを使用
 #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;
 }


  • Ace Databaseを使用
 #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;
 }