|
|
| 1行目: |
1行目: |
| == 概要 ==
| |
| ODBC(Open Database Connectivity)は、Microsoft社が提唱したDBMS接続用のAPI仕様である。<br>
| |
| DBMSの差異はODBCドライバによって吸収される為、ODBCの手順に従ってプログラムを作成すれば、基本的な差異を意識せずプログラムすることができる。<br>
| |
| MFC ODBCクラスは、Visual C++のODBCクラスライブラリである。<br><br>
| |
|
| |
|
| <center>
| |
| {| class="wikitable"
| |
| |-
| |
| ! 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
| |
| |}
| |
| </center>
| |
| <br><br>
| |
|
| |
| == サンプルコード ==
| |
| * <big>'''SQL Serverを使用'''</big>
| |
| <source 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>
| |
| <br>
| |
| * <big>'''Oracle Databaseを使用'''</big>
| |
| <source 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>
| |
| <br>
| |
| * <big>'''MySQLを使用'''</big>
| |
| <source 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>
| |
| <br>
| |
| * <big>'''Jet Databaseを使用'''</big>
| |
| <source 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>
| |
| <br>
| |
| * <big>'''Ace Databaseを使用'''</big>
| |
| <source 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>
| |
| <br><br>
| |
|
| |
| __FORCETOC__
| |
| [[カテゴリ:MFC]]
| |