Freigeben über


IRowsetUpdateImpl-Klasse

Die OLE DB-Vorlagenimplementierung der IRowsetUpdate-Schnittstelle .

Syntax

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>

Parameter

T
Eine von IRowsetUpdateImpl.

Storage
Der Benutzerdatensatz.

UpdateArray
Ein Array, das zwischengespeicherte Daten zum Aktualisieren des Rowsets enthält.

RowClass
Die Speichereinheit für die HROW.

MapClass
Die Speichereinheit für alle Zeilenhandles, die vom Anbieter gehalten werden.

Anforderungen

Header: „atldb.h“

Member

Schnittstellenmethoden (verwendet mit IRowsetChange)

Name Beschreibung
Setdata Legt Datenwerte in einer oder mehreren Spalten fest.

Schnittstellenmethoden (verwendet mit IRowsetUpdate)

Name Beschreibung
GetOriginalData Ruft die Daten ab, die zuletzt an die Datenquelle übermittelt oder abgerufen wurden, wobei ausstehende Änderungen ignoriert werden.
GetPendingRows Gibt eine Liste von Zeilen mit ausstehenden Änderungen zurück.
GetRowStatus Gibt den Status der angegebenen Zeilen zurück.
Rückgängig Rückgängig machen alle Änderungen an der Zeile seit dem letzten Abrufen oder Aktualisieren.
Aktualisieren Überträgt alle Änderungen, die seit dem letzten Abruf oder Update an der Zeile vorgenommen wurden.

Implementierungsmethoden (Callback)

Name Beschreibung
IsUpdateAllowed Wird verwendet, um auf Sicherheit, Integrität usw. zu überprüfen, bevor Updates zugelassen werden.

Datenelemente

Name Beschreibung
m_mapCachedData Enthält die ursprünglichen Daten für den verzögerten Vorgang.

Hinweise

Sie sollten zuerst die Dokumentation für IRowsetChange lesen und verstehen, da hier auch alles beschriebene gilt. Außerdem sollten Sie Kapitel 6 der OLE DB-Programmierreferenz zum Festlegen von Daten lesen.

IRowsetUpdateImpl implementiert die OLE DB-Schnittstelle IRowsetUpdate , mit der Verbraucher die Übertragung von Änderungen verzögern können, die an IRowsetChange der Datenquelle vorgenommen wurden, und Änderungen vor der Übertragung rückgängig machen.

Wichtig

Es wird dringend empfohlen, die folgende Dokumentation zu lesen, BEVOR Sie versuchen, Ihren Anbieter zu implementieren:

IRowsetUpdateImpl::SetData

Legt Datenwerte in einer oder mehreren Spalten fest.

Syntax

STDMETHOD (SetData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pSrcData);

Parameter

Siehe "IRowsetChange::SetData " in der OLE DB-Programmierreferenz.

Hinweise

Diese Methode setzt die IRowsetChangeImpl::SetData-Methode außer Kraft, schließt aber das Zwischenspeichern von ursprünglichen Daten ein, um die sofortige oder verzögerte Verarbeitung des Vorgangs zu ermöglichen.

IRowsetUpdateImpl::GetOriginalData

Ruft die Daten ab, die zuletzt an die Datenquelle übermittelt oder abgerufen wurden, wobei ausstehende Änderungen ignoriert werden.

Syntax

STDMETHOD (GetOriginalData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pData);

Parameter

Siehe "IRowsetUpdate::GetOriginalData " in der OLE DB-Programmierreferenz.

IRowsetUpdateImpl::GetPendingRows

Gibt eine Liste von Zeilen mit ausstehenden Änderungen zurück.

Syntax

STDMETHOD (GetPendingRows )(HCHAPTER /* hReserved */,
   DBPENDINGSTATUS dwRowStatus,
   DBCOUNTITEM* pcPendingRows,
   HROW** prgPendingRows,
   DBPENDINGSTATUS** prgPendingStatus);

Parameter

hReserved
[in] Entspricht dem hChapter-Parameter in IRowsetUpdate::GetPendingRows.

Weitere Parameter finden Sie unter "IRowsetUpdate::GetPendingRows " in der OLE DB-Programmierreferenz.

Hinweise

Weitere Informationen finden Sie unter "IRowsetUpdate::GetPendingRows " in der OLE DB-Programmierreferenz.

IRowsetUpdateImpl::GetRowStatus

Gibt den Status der angegebenen Zeilen zurück.

Syntax

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

Parameter

hReserved
[in] Entspricht dem hChapter-Parameter in IRowsetUpdate::GetRowStatus.

Weitere Parameter finden Sie unter "IRowsetUpdate::GetRowStatus " in der OLE DB-Programmierreferenz.

IRowsetUpdateImpl::Undo

Rückgängig machen alle Änderungen an der Zeile seit dem letzten Abrufen oder Aktualisieren.

Syntax

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

Parameter

hReserved
[in] Entspricht dem hChapter-Parameter in IRowsetUpdate::Undo.

pcRowsUndone
[out] Entspricht dem parameter "pcRows " in "IRowsetUpdate::Undo".

prgRowsUndone
[in] Entspricht dem Parameter "prgRows " in "IRowsetUpdate::Undo".

Weitere Parameter finden Sie unter "IRowsetUpdate::Undo " in der OLE DB-Programmierreferenz.

IRowsetUpdateImpl::Update

Überträgt alle Änderungen, die seit dem letzten Abruf oder Update an der Zeile vorgenommen wurden.

Syntax

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

Parameter

hReserved
[in] Entspricht dem hChapter-Parameter in IRowsetUpdate::Update.

Weitere Parameter finden Sie unter "IRowsetUpdate::Update " in der OLE DB-Programmierreferenz.

Hinweise

Änderungen werden durch Aufrufen von IRowsetChangeImpl::FlushData übertragen. Der Consumer muss CRowset::Update aufrufen, damit die Änderungen wirksam werden. Legen Sie prgRowstatus auf einen geeigneten Wert fest, wie in Zeilenzuständen in der OLE DB-Programmierreferenz beschrieben.

IRowsetUpdateImpl::IsUpdateAllowed

Überschreiben Sie diese Methode, um vor Updates auf Sicherheit, Integrität usw. zu überprüfen.

Syntax

HRESULT IsUpdateAllowed(DBPENDINGSTATUS /* [in] */ /* status */,
   HROW /* [in] */ /* hRowUpdate */,
   DBROWSTATUS* /* [out] */ /* pRowStatus */);

Parameter

status
[in] Der Status der ausstehenden Vorgänge in den Zeilen.

hRowUpdate
[in] Behandeln Sie die Zeilen, die der Benutzer aktualisieren möchte.

pRowStatus
[out] Der Status, der an den Benutzer zurückgegeben wurde.

Hinweise

Wenn Sie feststellen, dass ein Update zulässig sein soll, wird S_OK zurückgegeben; andernfalls wird E_FAIL zurückgegeben. Wenn Sie ein Update zulassen, müssen Sie auch das DBROWSTATUS In IRowsetUpdateImpl::Update auf einen entsprechenden Zeilenstatus festlegen.

IRowsetUpdateImpl::m_mapCachedData

Eine Zuordnung, die die ursprünglichen Daten für den verzögerten Vorgang enthält.

Syntax

CAtlMap<
   HROW hRow,
   Storage* pData
>
m_mapCachedData;

Parameter

hRow
Behandeln Sie die Zeilen für die Daten.

Pdata
Ein Zeiger auf die Daten, die zwischengespeichert werden sollen. Die Daten sind vom Typ " Storage " (die Benutzerdatensatzklasse). Siehe das Argument "Storage-Vorlage " in der IRowsetUpdateImpl-Klasse.

Siehe auch

OLE DB-Anbietervorlagen
Architektur von OLE DB-Anbietervorlagen
Erstellen eines aktualisierbaren Anbieters