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

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(Wiki がページ「ODBCでデータベースに接続する(MFC)」を「MFCとデータベース - データベースの接続」に、リダイレクトを残さずに移動しました)
(文字列「<source lang」を「<syntaxhighlight lang」に置換)
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>
63行目: 63行目:
<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>
94行目: 94行目:
<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>
125行目: 125行目:
<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>
156行目: 156行目:
<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>

2021年11月15日 (月) 03:44時点における版

概要

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を使用
<syntaxhighlight lang="cpp">
#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;
}
</source>


  • Oracle Databaseを使用
<syntaxhighlight lang="cpp">
#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;
}
</source>


  • MySQLを使用
<syntaxhighlight lang="cpp">
#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;
}
</source>


  • Jet Databaseを使用
<syntaxhighlight lang="cpp">
#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;
}
</source>


  • Ace Databaseを使用
<syntaxhighlight lang="cpp">
#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;
}
</source>