IRowsetImpl クラス

IRowset インターフェイスの実装を提供します。

構文

template <
   class T,
   class RowsetInterface,
   class RowClass = CSimpleRow,
   class MapClass = CAtlMap <
      RowClass::KeyType,
      RowClass*>>
class ATL_NO_VTABLE IRowsetImpl : public RowsetInterface

パラメーター

T
IRowsetImpl から派生したクラス。

RowsetInterface
IRowsetImpl の派生クラス。

RowClass
HROW のストレージ ユニット。

MapClass
プロバイダーによって保持されているすべての行ハンドルのストレージ ユニット。

要件

ヘッダー: atldb.h

メンバー

メソッド

Name 説明
AddRefRows 既存の行ハンドルに参照カウントを追加します。
CreateRow 新しい HROW を割り当てるために GetNextRows によって呼び出されます。 ユーザーが直接呼び出すことはありません。
GetData 行セットの行のコピーからデータを取得します。
GetDBStatus 指定されたフィールドの状態を返します。
GetNextRows 前の位置を記憶して、行を順番にフェッチします。
IRowsetImpl コンストラクター。 ユーザーが直接呼び出すことはありません。
RefRows AddRefRows と ReleaseRows によって呼び出されます。 ユーザーが直接呼び出すことはありません。
ReleaseRows 行を解放します。
RestartPosition 次のフェッチ位置を初期位置に位置変更します。つまり、行セットが最初に作成されたときの位置です。
SetDBStatus 指定されたフィールドの状態フラグを設定します。

データ メンバー

名前 説明
m_bCanFetchBack プロバイダーが逆方向のフェッチをサポートするかどうかを示します。
m_bCanScrollBack プロバイダーがカーソルを逆方向にスクロールできるかどうかを示します。
m_bReset プロバイダーがカーソル位置をリセットしたかどうかを示します。 これは、GetNextRows で逆方向にスクロールするとき、または逆方向にフェッチするときに特別な意味を持ちます。
m_iRowset カーソルを表す、行セットへのインデックス。
m_rgRowHandles 行ハンドルのリスト。

解説

IRowset は、行セットの基本インターフェイスです。

IRowsetImpl::AddRefRows

既存の行ハンドルに参照カウントを追加します。

構文

STDMETHOD(AddRefRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

パラメーター

"OLE DB プログラマーズ リファレンス" の「IRowset::AddRefRows」をご覧ください。

IRowsetImpl::CreateRow

新しい HROW を割り当てるために GetNextRows によって呼び出されるヘルパー メソッド。

構文

HRESULT CreateRow(DBROWOFFSET lRowsOffset,
   DBCOUNTITEM& cRowsObtained,
   HROW* rgRows);

パラメーター

lRowsOffset
作成されている行のカーソル位置。

cRowsObtained
ユーザーに返される、作成された行の数を示す参照。

rgRows
呼び出し元に返される、新しく作成された行ハンドルを含む HROW の配列。

解説

行が存在する場合、このメソッドは AddRefRows を呼び出して戻ります。 それ以外の場合は、RowClass テンプレート変数の新しいインスタンスを割り当て、それを m_rgRowHandles に追加します。

IRowsetImpl::GetData

行セットの行のコピーからデータを取得します。

構文

STDMETHOD(GetData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pDstData);

パラメーター

「OLE DB プログラマーズ リファレンス」の「IRowset::GetData」を参照してください。

一部のパラメーターは、"OLE DB プログラマーズ リファレンス" の IRowset::GetData で説明されている異なる名前のパラメーターに対応しています。

OLE DB テンプレートのパラメーター "OLE DB プログラマーズ リファレンス" のパラメーター
pDstData pData

解説

OLE DB データ変換 DLL を使用したデータ変換も処理します。

IRowsetImpl::GetDBStatus

指定されたフィールドの DBSTATUS 状態フラグを返します。

構文

virtual DBSTATUS GetDBStatus(RowClass* currentRow,
   ATLCOLUMNINFO* columnNames);

パラメーター

currentRow
[入力] 現在の行。

columnNames
[入力] 状態が要求されている列。

戻り値

列の DBSTATUS フラグ。

IRowsetImpl::GetNextRows

前の位置を記憶して、行を順番にフェッチします。

構文

STDMETHOD(GetNextRows )(HCHAPTER hReserved,
   DBROWOFFSET lRowsOffset,
   DBROWCOUNT cRows,
   DBCOUNTITEM* pcRowsObtained,
   HROW** prghRows);

パラメーター

"OLE DB プログラマーズ リファレンス" の「IRowset::GetNextRows」をご覧ください。

IRowsetImpl::IRowsetImpl

コンストラクター。

構文

IRowsetImpl();

解説

通常、このメソッドを直接呼び出す必要はありません。

IRowsetImpl::RefRows

既存の行ハンドルの参照カウントをインクリメントまたは解放するために、AddRefRows および ReleaseRows によって呼び出されます。

構文

HRESULT RefRows(DBCOUNTITEM cRows,
   const HROWrghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[],
   BOOL bAdd);

パラメーター

"OLE DB プログラマーズ リファレンス" の「IRowset::AddRefRows」をご覧ください。

戻り値

標準の HRESULT 値。

IRowsetImpl::ReleaseRows

行を解放します。

構文

STDMETHOD(ReleaseRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBROWOPTIONS rgRowOptions[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

パラメーター

"OLE DB プログラマーズ リファレンス" の「IRowset::ReleaseRows」をご覧ください。

IRowsetImpl::RestartPosition

次のフェッチ位置を初期位置に位置変更します。つまり、行セットが最初に作成されたときの位置です。

構文

STDMETHOD(RestartPosition )(HCHAPTER /* hReserved */);

パラメーター

"OLE DB プログラマーズ リファレンス" の「IRowset::RestartPosition」をご覧ください。

解説

行セットの位置は、GetNextRow が呼び出されるまで未定義です。 RestartPosition を呼び出してから、逆方向にフェッチまたはスクロールすることで、行セット内を逆方向に移動できます。

IRowsetImpl::SetDBStatus

指定されたフィールドの DBSTATUS 状態フラグを設定します。

構文

virtual HRESULT SetDBStatus(DBSTATUS* statusFlags,
   RowClass* currentRow,
   ATLCOLUMNINFO* columnInfo);

パラメーター

statusFlags
列に設定する DBSTATUS フラグ。

currentRow
現在の行のことです。

columnInfo
状態が設定されている列。

戻り値

標準の HRESULT 値。

解説

プロバイダーが DBSTATUS_S_ISNULL と DBSTATUS_S_DEFAULT に対して特別な処理を提供するには、この関数をオーバーライドします。

IRowsetImpl::m_bCanFetchBack

プロバイダーが逆方向のフェッチをサポートするかどうかを示します。

構文

unsigned m_bCanFetchBack:1;

解説

DBPROPSET_ROWSET グループの DBPROP_CANFETCHBACKWARDS プロパティにリンクされます。 m_bCanFetchBackwards を true にするには、プロバイダーで DBPROP_CANFETCHBACKWARDS がサポートされている必要があります。

IRowsetImpl::m_bCanScrollBack

プロバイダーがカーソルを逆方向にスクロールできるかどうかを示します。

構文

unsigned  m_bCanScrollBack:1;

解説

DBPROPSET_ROWSET グループの DBPROP_CANSCROLLBACKWARDS プロパティにリンクされます。 m_bCanFetchBackwards を true にするには、プロバイダーで DBPROP_CANSCROLLBACKWARDS がサポートされている必要があります。

IRowsetImpl::m_bReset

カーソル位置が行セットで定義されているかどうかを判断するために使われるビット フラグ。

構文

unsigned m_bReset:1;

解説

コンシューマーが、lOffset または cRows を負に設定し、m_bReset を true に設定して GetNextRows を呼び出すと、GetNextRows は行セットの末尾に移動します。 m_bReset が false の場合、コンシューマーは、OLE DB の仕様に従ってエラー コードを受け取ります。 m_bReset フラグが true に設定されるのは、行セットが最初に作成されたときと、コンシューマーが IRowsetImpl::RestartPosition を呼び出したときです。 GetNextRows を呼び出すと、false に設定されます。

IRowsetImpl::m_iRowset

カーソルを表す、行セットへのインデックス。

構文

DBROWOFFSET m_iRowset;

IRowsetImpl::m_rgRowHandles

プロバイダーによって GetNextRows への応答に現在格納されている行ハンドルのマップ。

構文

MapClass m_rgRowHandles;

解説

行ハンドルは、ReleaseRows を呼び出すことによって削除されます。 MapClass の定義については、IRowsetImpl の概要に関する記事をご覧ください。

関連項目

OLE DB プロバイダー テンプレートに関するページ
OLE DB プロバイダー テンプレートのアーキテクチャ
CSimpleRow クラス