Compartilhar via


Classe IRowsetUpdateImpl

A implementação de Modelos OLE DB da interface IRowsetUpdate.

Sintaxe

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>

Parâmetros

T
Uma classe derivada de IRowsetUpdateImpl.

Storage
O registro do usuário.

UpdateArray
Uma matriz que contém dados armazenados em cache para atualizar o conjunto de linhas.

RowClass
A unidade de armazenamento do HROW.

MapClass
A unidade de armazenamento para todos os identificadores de linha mantidos pelo provedor.

Requisitos

Cabeçalho: atldb.h

Membros

Métodos de interface (usados com IRowsetChange)

Nome Descrição
SetData Define valores de dados em uma ou mais colunas.

Métodos de interface (usados com IRowsetUpdate)

Nome Descrição
GetOriginalData Obtém os dados mais recentemente transmitidos ou obtidos da fonte de dados, ignorando as alterações pendentes.
GetPendingRows Retorna uma lista de linhas com alterações pendentes.
GetRowStatus Retorna o status das linhas especificadas.
Desfazer Desfaz todas as alterações feitas em uma linha desde o último fetch ou atualização.
Atualizar Desfaz todas as alterações feitas em uma linha desde o último fetch ou atualização.

Método de implementação (retorno de chamada)

Nome Descrição
IsUpdateAllowed Usado para verificar se há segurança, integridade e assim por diante antes de permitir atualizações.

Membros de dados

Nome Descrição
m_mapCachedData Contém os dados originais da operação adiada.

Comentários

Primeiro, você deve ler e entender a documentação do IRowsetChange, pois tudo que está descrito aí também se aplica aqui. Você também deve ler o capítulo 6 da Referência do Programador OLE DB sobre a configuração de dados.

IRowsetUpdateImpl implementa a interface IRowsetUpdate do OLE DB, que permite que os consumidores atrasem a transmissão das alterações feitas com IRowsetChange para a fonte de dados e desfaçam as alterações antes da transmissão.

Importante

É altamente recomendável que você leia a documentação a seguir ANTES de tentar implementar seu provedor:

IRowsetUpdateImpl::SetData

Define valores de dados em uma ou mais colunas.

Sintaxe

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

Parâmetros

Consulte IRowsetChange::SetData na Referência do programador OLE DB.

Comentários

Esse método substitui o método IRowsetChangeImpl::SetData, mas inclui o cache de dados originais para permitir o processamento imediato ou adiado da operação.

IRowsetUpdateImpl::GetOriginalData

Obtém os dados mais recentemente transmitidos ou obtidos da fonte de dados, ignorando as alterações pendentes.

Sintaxe

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

Parâmetros

Consulte IRowsetUpdate::GetOriginalData na Referência do programador OLE DB.

IRowsetUpdateImpl::GetPendingRows

Retorna uma lista de linhas com alterações pendentes.

Sintaxe

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

Parâmetros

hReserved
[in] Corresponde ao parâmetro hChapter em IRowsetUpdate::GetPendingRows.

Para outros parâmetros, confira IRowsetUpdate::GetPendingRows na Referência do Programador OLE DB.

Comentários

Para mais informações, confira IRowsetUpdate::GetPendingRows na Referência do Programador OLE DB.

IRowsetUpdateImpl::GetRowStatus

Retorna o status das linhas especificadas.

Sintaxe

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

Parâmetros

hReserved
[in] Corresponde ao parâmetro hChapter em IRowsetUpdate::GetRowStatus.

Para outros parâmetros, confira IRowsetUpdate::GetRowStatus na Referência do Programador OLE DB.

IRowsetUpdateImpl::Undo

Desfaz todas as alterações feitas em uma linha desde o último fetch ou atualização.

Sintaxe

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

Parâmetros

hReserved
[in] Corresponde ao parâmetro hChapter em IRowsetUpdate::Undo.

pcRowsUndone
[in] Corresponde ao parâmetro pcRows em IRowsetUpdate::Undo.

prgRowsUndone
[in] Corresponde ao parâmetro prgRows em IRowsetUpdate::Undo.

Para outros parâmetros, confira IRowsetUpdate::Undo na Referência do Programador OLE DB.

IRowsetUpdateImpl::Update

Desfaz todas as alterações feitas em uma linha desde o último fetch ou atualização.

Sintaxe

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

Parâmetros

hReserved
[in] Corresponde ao parâmetro hChapter em IRowsetUpdate::Update.

Para outros parâmetros, confira IRowsetUpdate::Update na Referência do Programador OLE DB.

Comentários

As alterações são transmitidas chamando IRowsetChangeImpl::FlushData. O consumidor deve chamar CRowset::Update para que as alterações entrem em vigor. Defina prgRowstatus como um valor apropriado, conforme descrito em Estados de Linha na Referência do Programador OLE DB.

IRowsetUpdateImpl::IsUpdateAllowed

Substitua esse método para verificar se há segurança, integridade e assim por diante antes de permitir atualizações.

Sintaxe

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

Parâmetros

status
[in] O status das operações pendentes nas linhas.

hRowUpdate
[in] Manipule as linhas que o usuário deseja atualizar.

pRowStatus
[out] O status retornado ao usuário.

Comentários

Se você determinar que uma atualização deve ser permitida, ele retornará S_OK; caso contrário, ele retornará E_FAIL. Se você permitir uma atualização, também precisará definir DBROWSTATUS em IRowsetUpdateImpl::Update para um estado de linha apropriado.

IRowsetUpdateImpl::m_mapCachedData

Um mapa contendo os dados originais da operação adiada.

Sintaxe

CAtlMap<
   HROW hRow,
   Storage* pData
>
m_mapCachedData;

Parâmetros

hRow
[in] Identificador para as linhas dos dados.

pData
Um ponteiro para os dados a serem armazenados em cache. Os dados são do tipo Armazenamento (a classe de registro do usuário). Consulte o argumento de modelo de Armazenamento na classe IRowsetUpdateImpl.

Confira também

Modelos de Provedor OLE DB
Arquitetura de modelo do provedor do OLE DB
Criando um provedor atualizável