Hello, OLE DB(C++) World!
Posted on 3月 27th, 2012 by cx20
OLE DB(C++)
OLE DB(Object Linking and Embedding Database)は、マイクロソフトが提唱した COM(Component Object Model)ベースの API 仕様である。
OLE DB の概念は「OLE DB プロバイダ」(データ提供者)と「OLE DB コンシューマ」(データ消費者)からなる。(サーバーやクライアントという用語を使わないのは、n 層の場合に、必ずしもその意味にならない為。)
データソースの差異は OLE DB プロバイダによって吸収される為、OLE DB コンシューマの手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。
OLE DB プロバイダとしては、以下のようなプロバイダがある。
プロバイダ名 |
表示名 |
説明 |
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 データベース |
ソースコード(VC + OLE DB + Jet データベース)
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicAccessor> rs;
WCHAR szCon[] = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=hello.mdb";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
rs.Open( ses, szSQL );
while( rs.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( rs.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)rs.GetValue(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
} |
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicAccessor> rs;
WCHAR szCon[] = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=hello.mdb";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
rs.Open( ses, szSQL );
while( rs.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( rs.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)rs.GetValue(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
}
ソースコード(VC + OLE DB + ACE データベース)
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicStringAccessor> cmd;
WCHAR szCon[] = L"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=hello.accdb";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
cmd.Open( ses, szSQL );
while( cmd.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( cmd.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)cmd.GetString(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
} |
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicStringAccessor> cmd;
WCHAR szCon[] = L"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=hello.accdb";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
cmd.Open( ses, szSQL );
while( cmd.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( cmd.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)cmd.GetString(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
}
ソースコード(VC + OLE DB + SQL Server)
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicAccessor> rs;
WCHAR szCon[] = L"PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
rs.Open( ses, szSQL );
while( rs.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( rs.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)rs.GetValue(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
} |
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicAccessor> rs;
WCHAR szCon[] = L"PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
rs.Open( ses, szSQL );
while( rs.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( rs.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)rs.GetValue(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
}
ソースコード(VC + OLE DB + Oracle)
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicAccessor> rs;
WCHAR szCon[] = L"PROVIDER=MSDAORA;Data Source=ORCL;User ID=scott;Password=tiger";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message FROM DUAL";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
rs.Open( ses, szSQL );
while( rs.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( rs.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)rs.GetValue(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
} |
#include <atldbcli.h>
int _tmain( int argc, TCHAR* argv[] )
{
CoInitialize(NULL);
USES_CONVERSION;
CDataSource ds;
CSession ses;
CCommand<CDynamicAccessor> rs;
WCHAR szCon[] = L"PROVIDER=MSDAORA;Data Source=ORCL;User ID=scott;Password=tiger";
WCHAR szSQL[] = L"SELECT 'Hello, OLE DB World!' AS Message FROM DUAL";
ds.OpenFromInitializationString( szCon );
ses.Open( ds );
rs.Open( ses, szSQL );
while( rs.MoveNext() == S_OK )
{
_tprintf( _T("%sn"), OLE2T( rs.GetColumnName(1) ) );
_tprintf( _T("--------------------n") );
_tprintf( _T("%sn"), (LPCTSTR)rs.GetValue(1) );
}
ses.Close();
ds.Close();
CoInitialize(NULL);
return 0;
}
コンパイル&リンク方法(Visual C++)
実行結果
Message
--------------------
Hello, OLE DB World! |
Message
--------------------
Hello, OLE DB World!
Tags: OLE DB
Categories: library, OLE DB, SQL, SQL Server