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 クラス