OLE DB プロバイダ テンプレート (C++)

更新 : 2007 年 11 月

OLE DB は、Microsoft の Universal Data Access 戦略の中核を担う部分です。OLE DB は、データ ソースの種類にかかわらず、短時間でデータにアクセスできるようにデザインされています。さらに、表形式のデータの場合は、データベースのデータでなくても、OLE DB を通じて表示できます。OLE DB はこのように柔軟性が高いため、広範囲に活用できます。

OLE DB コンシューマとプロバイダ」で説明しているように、OLE DB はコンシューマとプロバイダの概念に基づいています。コンシューマがデータを要求し、プロバイダはデータを表形式でコンシューマに返します。プログラミングの観点においてこのモデルで最も重要な点は、コンシューマが行うことができる呼び出しをプロバイダ側で実装する必要があるということです。

プロバイダとは何か

OLE DB プロバイダは、コンシューマ オブジェクトからのインターフェイス呼び出しを処理する COM オブジェクトのセットであり、永続性のあるソース (データ ストアと呼ぶ) からコンシューマにデータを表形式で転送します。

単純なプロバイダを作成することも、複雑なプロバイダを作成することもできます。たとえば、プロバイダがサポートする機能を最小限にすることも、追加のインターフェイスを実装してあらゆる機能を備えたプロバイダをサポートすることもできます。プロバイダは、テーブルを返すことができます。クライアントはそのテーブルの形式を判断し、そのデータを操作できます。

各プロバイダは、クライアントからの要求を処理する COM オブジェクトの標準セットを実装します。標準的な意味では、OLE DB コンシューマは、言語 (C++ や Basic など) に関係なく任意のプロバイダからのデータにアクセスできます。

各 COM オブジェクトには、複数のインターフェイスが含まれています。これらのインターフェイスには、必須のインターフェイスと省略可能なインターフェイスがあります。必須のインターフェイスを実装することにより、プロバイダは、任意のコンシューマが使用できる最小レベルの機能を保証します (合致と呼ぶ)。プロバイダは、通常は省略可能なインターフェイスを実装して、追加機能を提供することもできます。「OLE DB プロバイダ テンプレートのアーキテクチャ」で、これらのインターフェイスについて詳しく説明します。クライアントは、常に QueryInterface を呼び出して、プロバイダが特定のインターフェイスをサポートしているかどうかを判断する必要があります。

OLE DB 仕様レベルのサポート

OLE DB プロバイダ テンプレートは、OLE DB Version 2.7 の仕様をサポートしています。OLE DB プロバイダ テンプレートを使用すると、レベル 0 に準拠したプロバイダを実装できます。たとえば、プロバイダ サンプルでは、DOS DIR コマンドを実行してファイル システムを調べる非 SQL (MS-DOS) コマンド サーバーを実装するためにテンプレートを使用します。プロバイダ サンプルは、ディレクトリ情報を行セットに入れて返します。これは、表形式のデータを返すための標準的な OLE DB 機構です。

OLE DB テンプレートがサポートする最も単純なプロバイダは、コマンドを持たない読み取り専用プロバイダです。ブックマークの設定や読み取り/書き込みを行うためのコマンドを持つプロバイダもサポートされています。適切なコードを追加して、読み取りと書き込みを行うプロバイダを実装できます。動的な行セットとトランザクションは、現在のバージョンではサポートされていませんが、必要に応じて追加できます。

OLE DB プロバイダはどのような場合に作成する必要があるか

独自のプロバイダを作成する必要は必ずしもありません。Microsoft では、あらかじめパッケージ化された複数の標準プロバイダを Visual C++ の [データ リンク プロパティ] ダイアログ ボックスに用意しています。OLE DB プロバイダを作成する主な理由は、Universal Data Access を利用するためです。これには、以下のような利点があります。

  • C++、Basic、Visual Basic Scripting Edition などの言語を使用したデータへのアクセス。これにより、組織内の複数のプログラマは、使用する言語に関係なく、同じデータに同じ方法でアクセスできます。

  • SQL Server、Excel、Access などの他のデータ ソースへのデータの公開。この機能は、異なる形式間でデータを転送する場合に便利です。

  • 異種データ ソース間でのデータ操作。これは、効果的なデータ ウェアハウジング方法です。OLE DB プロバイダを使用して、データをネイティブな形式で保持する一方、単純な操作でそのデータにアクセスできます。

  • クエリ処理などのデータへの機能の追加。

  • 操作方法の制御によるデータ アクセスのパフォーマンスの向上。

  • 保全性の向上。1 人のプログラマしかアクセスできない独自データ形式がある場合はリスクが生じます。OLE DB プロバイダを使用すると、独自の形式をすべてのプログラマに公開できます。

読み取り専用プロバイダと更新可能なプロバイダ

プロバイダの複雑さと機能は、プロバイダによってさまざまです。プロバイダを読み取り専用プロバイダと更新可能プロバイダに分類すると便利です。

  • Visual C++ 6.0 は、読み取り専用プロバイダだけをサポートしていました。読み取り専用プロバイダの作成方法については、「OLE DB プロバイダの作成」を参照してください。

  • Visual C++ .NET は、データ ストアを更新 (書き込み) できる更新可能なプロバイダをサポートします。更新可能なプロバイダについては、「更新可能なプロバイダの作成」を参照してください。UpdatePV サンプルは、更新可能なプロバイダの例です。

詳細については、次のトピックを参照してください。

参照

参照

OLE DB SDK Documentation

OLE DB Programmer's Reference

その他の技術情報

データ アクセス (C++)