CCustomRowset (CustomRS.H)
ウィザードによって、行セット オブジェクトのエントリが生成されます。 この場合、それは CCustomRowset
という名前になります。 CCustomRowset
クラスは、CRowsetImpl
という名前 OLE DB プロバイダー クラスを継承します。このクラスには、行セット オブジェクトに必要なすべてのインターフェイスが実装されています。 次のコードは、CRowsetImpl
の継承チェーンを示します。
template <class T, class Storage, class CreatorClass,
class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
public CRowsetImpl<T, Storage, CreatorClass, ArrayType,
CSimpleRow, IRowsetLocateImpl< T >>
CRowsetImpl
は、IAccessor
および IColumnsInfo
インターフェイスも使用します。 これらのインターフェイスは、テーブルの出力フィールドに使われます。 このクラスでは、IRowsetIdentity
の実装も提供されており、コンシューマーは 2 つの行が同じかどうかを判断できます。 IRowsetInfo
インターフェイスは、行セット オブジェクトのプロパティを実装しています。 プロバイダーは、IConvertType
インターフェイスを使用することで、コンシューマーによって要求されたデータ型と、プロバイダーによって使用されるデータ型の違いを解決できます。
IRowset
インターフェイスは、データの取得を実際に処理します。 コンシューマーは、最初に GetNextRows
というメソッドを呼び出して、行のハンドル (HROW
) を取得します。 次に、コンシューマーはその HROW
を指定して IRowset::GetData
を呼び出し、要求されたデータを取得します。
CRowsetImpl
は、複数のテンプレート パラメーターも受け取ります。 これらのパラメーターを使うと、CRowsetImpl
クラスによるデータの処理方法を決定できます。 ArrayType
引数を使うと、行データの格納に使われるストレージ メカニズムを決定できます。 RowClass パラメーターは、HROW
が含まれるクラスを指定します。
RowsetInterface パラメーターを使うと、IRowsetLocate
または IRowsetScroll
インターフェイスも使用できます。 IRowsetLocate
と IRowsetScroll
インターフェイスはどちらも、IRowset
から継承されます。 そのため、OLE DB プロバイダー テンプレートで、これらのインターフェイスの特別な処理を提供する必要があります。 これらのインターフェイスのいずれかを使いたい場合は、このパラメーターを使う必要があります。