次の方法で共有


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 によって行われた変更をデータ ソースに送信するのを遅らせ、送信前に変更を元に戻すことができます。

重要

プロバイダーを実装する前に、次のドキュメントを読むことを強くお勧めします。

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::GetPendingRowshChapter パラメーターに対応します。

他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::GetPendingRows」をご覧ください。

解説

詳しくは、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::GetPendingRows」をご覧ください。

IRowsetUpdateImpl::GetRowStatus

指定された行の状態を返します。

構文

STDMETHOD (GetRowStatus )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBPENDINGSTATUS rgPendingStatus[]);

パラメーター

hReserved
[入力] IRowsetUpdate::GetRowStatushChapter パラメーターに対応します。

他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::GetRowStatus」をご覧ください。

IRowsetUpdateImpl::Undo

最後のフェッチまたは更新以降に行に対して行われたすべての変更を元に戻します。

構文

STDMETHOD (Undo )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const HROW rghRows[ ],
   DBCOUNTITEM* pcRowsUndone,
   HROW** prgRowsUndone,
   DBROWSTATUS** prgRowStatus);

パラメーター

hReserved
[入力] IRowsetUpdate::UndohChapter パラメーターに対応します。

pcRowsUndone
[出力] IRowsetUpdate::UndopcRows パラメーターに対応します。

prgRowsUndone
[入力] IRowsetUpdate::UndoprgRows パラメーターに対応します。

他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetUpdate::Undo」をご覧ください。

IRowsetUpdateImpl::Update

最後のフェッチまたは更新以降に行に対して行われたすべての変更を送信します。

構文

STDMETHOD (Update )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBCOUNTITEM* pcRows,
   HROW** prgRows,
   DBROWSTATUS** prgRowStatus);

パラメーター

hReserved
[入力] IRowsetUpdate::UpdatehChapter パラメーターに対応します。

他のパラメーターについては、"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::UpdateDBROWSTATUS を適切な行の状態に設定する必要もあります。

IRowsetUpdateImpl::m_mapCachedData

遅延操作の元のデータを含むマップ。

構文

CAtlMap<
   HROW hRow,
   Storage* pData
>
m_mapCachedData;

パラメーター

hRow
データの行のハンドル。

pData
キャッシュするデータへのポインター。 データは Storage 型 (ユーザー レコード クラス) です。 IRowsetUpdateImpl クラスStorage テンプレート引数をご覧ください。

関連項目

OLE DB プロバイダー テンプレートに関するページ
OLE DB プロバイダー テンプレートのアーキテクチャ
更新可能なプロバイダーの作成