Hello, ADO(C++) World!
Posted on 3月 29th, 2012 by cx20
ADO(C++)
ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。
プロバイダ名 |
表示名 |
説明 |
MSDASQL |
Microsoft OLE DB Provider for ODBC |
ODBC データベース |
Microsoft.Jet.OLEDB.4.0 |
Microsoft OLE DB Provider for Microsoft Jet |
Microsoft Jet データベース |
Microsoft.ACE.OLEDB.12.0 |
Microsoft Office 12.0 Access Database Engine OLE DB Provider |
Microsoft Access データベース |
SQLOLEDB |
Microsoft OLE DB Provider for SQL Server |
Microsoft SQL Server |
SQLNCLI10 |
SQL Server Native Client 10.0 |
Microsoft SQL Server |
MSDAORA |
Microsoft OLE DB Provider for Oracle |
Oracle データベース |
なお、Windows 7 SP1 より、ADO(msado15.dll)のインターフェイス ID(GUID)が変更されており、下位 OS との互換性がなくなっている。
これを回避する為には、msado15.dll の代わりに互換性のあるタイプライブラリ msado60.tlb を参照する必要がある。
ソースコード(VC + ADO + OLEDB + Jet データベース)
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Hello.mdb"),
_T(""), _T(""), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
} |
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Hello.mdb"),
_T(""), _T(""), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
}
ソースコード(VC + ADO + OLEDB + ACE データベース)
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Hello.accdb"),
_T(""), _T(""), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
} |
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Hello.accdb"),
_T(""), _T(""), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
}
ソースコード(VC + ADO + OLEDB + SQL Server)
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=master;"),
_T("sa"), _T("P@ssW0rd"), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
} |
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=master;"),
_T("sa"), _T("P@ssW0rd"), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
}
ソースコード(VC + ADO + OLEDB + Oracle)
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("PROVIDER=MSDAORA;DBQ=ORCL;"),
_T("scott"), _T("tiger"), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message FROM DUAL"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
} |
#include <stdio.h>
#include <tchar.h>
#if (WINVER >= 0x0601) // Windows 7 以降
#import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
#else
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
#endif
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
_ConnectionPtr cn("ADODB.Connection");
_RecordsetPtr rs("ADODB.Recordset");
cn->Open( _T("PROVIDER=MSDAORA;DBQ=ORCL;"),
_T("scott"), _T("tiger"), adConnectUnspecified),
rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message FROM DUAL"), NULL, adCmdText );
while ( !rs->adoEOF )
{
_variant_t var = rs->Fields->GetItem( 0L )->Value;
_tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
rs->MoveNext();
}
rs->Close();
cn->Close();
rs = NULL;
cn = NULL;
CoUninitialize();
return 0;
}
コンパイル方法
実行結果
Categories: ADO, C++, library