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:
Capítulo 6 da Referência do programador OLE DB
Consulte também como a classe
RUpdateRowset
é usada no exemplo UpdatePV
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