行セット

行セットとは、データの列を含む行の集まりです。行セットは、すべての OLE DB データ プロバイダーが表形式で結果セット データを公開できるようにするための重要な機能を持つオブジェクトです。

コンシューマーでは IDBCreateSession::CreateSession メソッドを使用してセッションを作成した後、そのセッションで IOpenRowset インターフェイスまたは IDBCreateCommand インターフェイスのいずれかを使用して行セットを作成できます。SQL Server Native Client OLE DB プロバイダーでは、これら両方のインターフェイスがサポートされます。ここでは、これら両方のメソッドについて説明します。

  • IOpenRowset::OpenRowset メソッドを呼び出して行セットを作成します。

    この操作は、1 つのテーブル全体について行セットを作成することと同じです。このメソッドは、1 つのベース テーブルのすべての行を含む行セットを開き、その行セットを返します。OpenRowset の引数の 1 つは、行セットの作成元となるテーブルを識別するテーブル ID です。

  • IDBCreateCommand::CreateCommand メソッドを呼び出してコマンド オブジェクトを作成します。

    コマンド オブジェクトでは、プロバイダーがサポートするコマンドが実行されます。SQL Server Native Client OLE DB プロバイダーでは、SELECT ステートメントなどの任意の Transact-SQL ステートメントやストアド プロシージャへの呼び出しをコンシューマーで指定できます。コマンド オブジェクトを使用して行セットを作成する手順は次のとおりです。

    1. コンシューマーは、セッションの IDBCreateCommand::CreateCommand メソッドを呼び出してコマンド オブジェクトを取得し、そのコマンド オブジェクトの ICommandText インターフェイスを要求します。この ICommandText インターフェイスで、実際のコマンド テキストが設定および取得されます。コンシューマーは、ICommandText::SetCommandText メソッドを呼び出して、テキスト コマンドにコマンドを設定します。

    2. ユーザーがコマンドの ICommand::Execute メソッドを呼び出します。コマンドの実行時に構築される行セット オブジェクトには、コマンドから返される結果セットが含まれます。

コンシューマーは、ICommandProperties インターフェイスを使用して、ICommand::Execute インターフェイスで実行されるコマンドから返される行セットのプロパティを取得または設定できます。最も一般的に要求されるプロパティは、行セットでサポートする必要のあるインターフェイスです。コンシューマーはインターフェイスだけでなく、行セットやインターフェイスの動作を変更するプロパティも要求できます。

コンシューマーは IRowset::Release メソッドを使用して行セットを解放します。行セットを解放すると、コンシューマーがその行セットに保持しているすべての行ハンドルも解放されます。ただし、行セットを解放してもアクセサーは解放されません。IAccessor インターフェイスがある場合は、そのインターフェイスを解放する必要があります。