Classe IRowsetUpdateImpl

Implementazione dei modelli OLE DB dell'interfaccia IRowsetUpdate .

Sintassi

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>

Parametri

T
Classe derivata da IRowsetUpdateImpl.

Storage
Record utente.

UpdateArray
Matrice contenente i dati memorizzati nella cache per l'aggiornamento del set di righe.

RowClass
Unità di archiviazione per .HROW

MapClass
Unità di archiviazione per tutti gli handle di riga mantenuti dal provider.

Requisiti

Intestazione: atldb.h

Membri

Metodi di interfaccia (usati con IRowsetChange)

Nome Descrizione
SetData Imposta i valori dei dati in una o più colonne.

Metodi di interfaccia (usati con IRowsetUpdate)

Nome Descrizione
GetOriginalData Ottiene i dati trasmessi o ottenuti più di recente dall'origine dati, ignorando le modifiche in sospeso.
GetPendingRows Restituisce un elenco di righe con modifiche in sospeso.
GetRowStatus Restituisce lo stato delle righe specificate.
Annulla Annulla le modifiche apportate alla riga dopo l'ultimo recupero o aggiornamento.
Aggiornamento Trasmette tutte le modifiche apportate alla riga dall'ultimo recupero o aggiornamento.

Metodi di implementazione (callback)

Nome Descrizione
IsUpdateAllowed Usato per verificare la sicurezza, l'integrità e così via prima di consentire gli aggiornamenti.

Membri dei dati

Nome Descrizione
m_mapCachedData Contiene i dati originali per l'operazione posticipata.

Osservazioni:

Prima di tutto è necessario leggere e comprendere la documentazione per IRowsetChange, perché tutti gli elementi descritti si applicano qui. È anche necessario leggere il capitolo 6 del riferimento per programmatori OLE DB sui dati di impostazione.

IRowsetUpdateImpl implementa l'interfaccia OLE DB IRowsetUpdate , che consente ai consumer di ritardare la trasmissione delle modifiche apportate con IRowsetChange all'origine dati e annullare le modifiche prima della trasmissione.

Importante

È consigliabile leggere la documentazione seguente PRIMA di tentare di implementare il provider:

IRowsetUpdateImpl::SetData

Imposta i valori dei dati in una o più colonne.

Sintassi

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

Parametri

Vedere IRowsetChange::SetData nella guida di riferimento per programmatori OLE DB.

Osservazioni:

Questo metodo esegue l'override del metodo IRowsetChangeImpl::SetData , ma include la memorizzazione nella cache dei dati originali per consentire l'elaborazione immediata o posticipata dell'operazione.

IRowsetUpdateImpl::GetOriginalData

Ottiene i dati trasmessi o ottenuti più di recente dall'origine dati, ignorando le modifiche in sospeso.

Sintassi

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

Parametri

Vedere IRowsetUpdate::GetOriginalData nella guida di riferimento per programmatori OLE DB.

IRowsetUpdateImpl::GetPendingRows

Restituisce un elenco di righe con modifiche in sospeso.

Sintassi

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

Parametri

hReserved
[in] Corrisponde al parametro hChapter in IRowsetUpdate::GetPendingRows.

Per altri parametri, vedere IRowsetUpdate::GetPendingRows nella guida di riferimento per programmatori OLE DB.

Osservazioni:

Per altre informazioni, vedere IRowsetUpdate::GetPendingRows nella guida di riferimento per programmatori OLE DB.

IRowsetUpdateImpl::GetRowStatus

Restituisce lo stato delle righe specificate.

Sintassi

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

Parametri

hReserved
[in] Corrisponde al parametro hChapter in IRowsetUpdate::GetRowStatus.

Per altri parametri, vedere IRowsetUpdate::GetRowStatus nella guida di riferimento per programmatori OLE DB.

IRowsetUpdateImpl::Undo

Annulla le modifiche apportate alla riga dopo l'ultimo recupero o aggiornamento.

Sintassi

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

Parametri

hReserved
[in] Corrisponde al parametro hChapter in IRowsetUpdate::Undo.

pcRowsUndone
[out] Corrisponde al parametro pcRows in IRowsetUpdate::Undo.

prgRowsUndone
[in] Corrisponde al parametro prgRows in IRowsetUpdate::Undo.

Per altri parametri, vedere IRowsetUpdate::Undo nella guida di riferimento per programmatori OLE DB.

IRowsetUpdateImpl::Update

Trasmette tutte le modifiche apportate alla riga dall'ultimo recupero o aggiornamento.

Sintassi

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

Parametri

hReserved
[in] Corrisponde al parametro hChapter in IRowsetUpdate::Update.

Per altri parametri, vedere IRowsetUpdate::Update nella guida di riferimento per programmatori OLE DB.

Osservazioni:

Le modifiche vengono trasmesse chiamando IRowsetChangeImpl::FlushData. Il consumer deve chiamare CRowset::Update per rendere effettive le modifiche. Impostare prgRowstatus su un valore appropriato, come descritto in Stati di riga nella guida di riferimento per programmatori OLE DB.

IRowsetUpdateImpl::IsUpdateAllowed

Eseguire l'override di questo metodo per verificare la sicurezza, l'integrità e così via prima degli aggiornamenti.

Sintassi

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

Parametri

status
[in] Stato delle operazioni in sospeso sulle righe.

hRowUpdate
[in] Handle per le righe che l'utente vuole aggiornare.

pRowStatus
[out] Stato restituito all'utente.

Osservazioni:

Se si determina che un aggiornamento deve essere consentito, restituisce S_OK; in caso contrario restituisce E_FAIL. Se si consente un aggiornamento, è necessario impostare anche in IRowsetUpdateImpl::Update su uno stato di riga appropriato.DBROWSTATUS

IRowsetUpdateImpl::m_mapCachedData

Mappa contenente i dati originali per l'operazione posticipata.

Sintassi

CAtlMap<
   HROW hRow,
   Storage* pData
>
m_mapCachedData;

Parametri

hRow
Handle per le righe per i dati.

pData
Puntatore ai dati da memorizzare nella cache. I dati sono di tipo Storage (classe di record utente). Vedere l'argomento Modello di archiviazione nella classe IRowsetUpdateImpl.

Vedi anche

Modelli di provider OLE DB
Architettura dei modelli di provider OLE DB
Creazione di un provider aggiornabile