IRowsetUpdateImpl クラス
IRowsetUpdate インターフェイスの OLE DB テンプレートの実装。
構文
template <
class T,
class Storage,
class UpdateArray = CAtlArray<Storage>,
class RowClass = CSimpleRow,
class MapClass = CAtlMap <RowClass::KeyType, RowClass*>
>
class IRowsetUpdateImpl : public IRowsetChangeImpl<
T,
Storage,
IRowsetUpdate,
RowClass,
MapClass>
パラメーター
T
IRowsetUpdateImpl
の派生クラス。
Storage
ユーザー レコード。
UpdateArray
行セットを更新するためのキャッシュされたデータが格納されている配列。
RowClass
HROW
のストレージ ユニット。
MapClass
プロバイダーによって保持されているすべての行ハンドルのストレージ ユニット。
要件
ヘッダー: atldb.h
メンバー
インターフェイス メソッド (IRowsetChange で使用されるもの)
名前 | 説明 |
---|---|
SetData | 1 つ以上の列にデータ値を設定します。 |
インターフェイス メソッド (IRowsetUpdate で使用されるもの)
名前 | 説明 |
---|---|
GetOriginalData | データ ソースとの間で最後に転送または取得されたデータを取得します。保留中の変更は無視します。 |
GetPendingRows | 保留中の変更がある行のリストを返します。 |
GetRowStatus | 指定された行の状態を返します。 |
元に戻す | 最後のフェッチまたは更新以降に行に対して行われたすべての変更を元に戻します。 |
更新プログラム | 最後のフェッチまたは更新以降に行に対して行われたすべての変更を送信します。 |
実装メソッド (コールバック)
名前 | 説明 |
---|---|
IsUpdateAllowed | 更新を許可する前に、セキュリティや整合性などを調べるために使われます。 |
データ メンバー
名前 | 説明 |
---|---|
m_mapCachedData | 遅延操作の元のデータを格納します。 |
解説
最初に、IRowsetChange のドキュメントを読んで理解しておく必要があります。そこで説明されているすべてのことが、ここにも適用されます。 また、データの設定について、"OLE DB プログラマーズ リファレンス" の第 6 章も読む必要があります。
IRowsetUpdateImpl
は、OLE DB の IRowsetUpdate
インターフェイスを実装します。これにより、コンシューマーは、IRowsetChange
によって行われた変更をデータ ソースに送信するのを遅らせ、送信前に変更を元に戻すことができます。
重要
プロバイダーを実装する前に、次のドキュメントを読むことを強くお勧めします。
OLE DB プログラマーズ リファレンスの第 6 章
また、UpdatePV サンプルでの
RUpdateRowset
クラスの使用方法も参照してください。
IRowsetUpdateImpl::SetData
1 つ以上の列にデータ値を設定します。
構文
STDMETHOD (SetData )(HROW hRow,
HACCESSOR hAccessor,
void* pSrcData);
パラメーター
OLE DB プログラマーズ リファレンス の「IRowsetChange::SetData」をご覧ください。
解説
このメソッドは IRowsetChangeImpl::SetData メソッドをオーバーライドしますが、操作の即時処理または遅延処理を可能にするための、元のデータのキャッシュが含まれます。
IRowsetUpdateImpl::GetOriginalData
データ ソースとの間で最後に転送または取得されたデータを取得します。保留中の変更は無視します。
構文
STDMETHOD (GetOriginalData )(HROW hRow,
HACCESSOR hAccessor,
void* pData);
パラメーター
"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::GetOriginalData」をご覧ください。
IRowsetUpdateImpl::GetPendingRows
保留中の変更がある行のリストを返します。
構文
STDMETHOD (GetPendingRows )(HCHAPTER /* hReserved */,
DBPENDINGSTATUS dwRowStatus,
DBCOUNTITEM* pcPendingRows,
HROW** prgPendingRows,
DBPENDINGSTATUS** prgPendingStatus);
パラメーター
hReserved
[入力] IRowsetUpdate::GetPendingRows の hChapter パラメーターに対応します。
他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::GetPendingRows」をご覧ください。
解説
詳しくは、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::GetPendingRows」をご覧ください。
IRowsetUpdateImpl::GetRowStatus
指定された行の状態を返します。
構文
STDMETHOD (GetRowStatus )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBPENDINGSTATUS rgPendingStatus[]);
パラメーター
hReserved
[入力] IRowsetUpdate::GetRowStatus の hChapter パラメーターに対応します。
他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::GetRowStatus」をご覧ください。
IRowsetUpdateImpl::Undo
最後のフェッチまたは更新以降に行に対して行われたすべての変更を元に戻します。
構文
STDMETHOD (Undo )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[ ],
DBCOUNTITEM* pcRowsUndone,
HROW** prgRowsUndone,
DBROWSTATUS** prgRowStatus);
パラメーター
hReserved
[入力] IRowsetUpdate::Undo の hChapter パラメーターに対応します。
pcRowsUndone
[出力] IRowsetUpdate::Undo の pcRows パラメーターに対応します。
prgRowsUndone
[入力] IRowsetUpdate::Undo の prgRows パラメーターに対応します。
他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::Undo」をご覧ください。
IRowsetUpdateImpl::Update
最後のフェッチまたは更新以降に行に対して行われたすべての変更を送信します。
構文
STDMETHOD (Update )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBCOUNTITEM* pcRows,
HROW** prgRows,
DBROWSTATUS** prgRowStatus);
パラメーター
hReserved
[入力] IRowsetUpdate::Update の hChapter パラメーターに対応します。
他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::Update」をご覧ください。
解説
変更を送信するには、IRowsetChangeImpl::FlushData を呼び出します。 コンシューマーが変更を有効にするには、CRowset::Update を呼び出す必要があります。 "OLE DB プログラマーズ リファレンス" の行の状態に関する記事で説明されているように、prgRowstatus を適切な値に設定します。
IRowsetUpdateImpl::IsUpdateAllowed
更新前にセキュリティや整合性などをチェックするには、このメソッドをオーバーライドします。
構文
HRESULT IsUpdateAllowed(DBPENDINGSTATUS /* [in] */ /* status */,
HROW /* [in] */ /* hRowUpdate */,
DBROWSTATUS* /* [out] */ /* pRowStatus */);
パラメーター
status
[入力] 行で保留されている操作の状態。
hRowUpdate
[入力] ユーザーが更新しようとしている行のハンドル。
pRowStatus
[出力] ユーザーに返される状態。
解説
更新を許可する必要があると判断した場合は S_OK を返し、それ以外の場合は E_FAIL を返します。 更新を許可する場合は、IRowsetUpdateImpl::Update の DBROWSTATUS
を適切な行の状態に設定する必要もあります。
IRowsetUpdateImpl::m_mapCachedData
遅延操作の元のデータを含むマップ。
構文
CAtlMap<
HROW hRow,
Storage* pData
>
m_mapCachedData;
パラメーター
hRow
データの行のハンドル。
pData
キャッシュするデータへのポインター。 データは Storage 型 (ユーザー レコード クラス) です。 IRowsetUpdateImpl クラスの Storage テンプレート引数をご覧ください。
関連項目
OLE DB プロバイダー テンプレートに関するページ
OLE DB プロバイダー テンプレートのアーキテクチャ
更新可能なプロバイダーの作成