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:
Capitolo 6 del riferimento per programmatori OLE DB
Vedere anche come viene usata la
RUpdateRowset
classe nell'esempio UpdatePV
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