Share via


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

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++)