IRowsetUpdateImpl Class
The OLE DB Templates implementation of the IRowsetUpdate interface.
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>
Parameters
T
A class derived from IRowsetUpdateImpl
.
Storage
The user record.
UpdateArray
An array containing cached data for updating the rowset.
RowClass
The storage unit for the HROW
.
MapClass
The storage unit for all row handles held by the provider.
Requirements
Header: atldb.h
Members
Interface Methods (Used with IRowsetChange)
Name | Description |
---|---|
SetData | Sets data values in one or more columns. |
Interface Methods (Used with IRowsetUpdate)
Name | Description |
---|---|
GetOriginalData | Gets the data most recently transmitted to or obtained from the data source, ignoring pending changes. |
GetPendingRows | Returns a list of rows with pending changes. |
GetRowStatus | Returns the status of specified rows. |
Undo | Undoes any changes to the row since the last fetch or update. |
Update | Transmits any changes made to the row since the last fetch or update. |
Implementation Methods (Callback)
Name | Description |
---|---|
IsUpdateAllowed | Used to check for security, integrity, and so on before allowing updates. |
Data Members
Name | Description |
---|---|
m_mapCachedData | Contains the original data for the deferred operation. |
Remarks
You should first read and understand the documentation for IRowsetChange, because everything described there also applies here. You should also read chapter 6 of the OLE DB Programmer's Reference on setting data.
IRowsetUpdateImpl
implements the OLE DB IRowsetUpdate
interface, which enables consumers to delay the transmission of changes made with IRowsetChange
to the data source and undo changes before transmission.
Important
It is strongly recommended that you read the following documentation BEFORE attempting to implement your provider:
Chapter 6 of the OLE DB Programmer's Reference
Also see how the
RUpdateRowset
class is used in the UpdatePV sample
IRowsetUpdateImpl::SetData
Sets data values in one or more columns.
Syntax
STDMETHOD (SetData )(HROW hRow,
HACCESSOR hAccessor,
void* pSrcData);
Parameters
See IRowsetChange::SetData in the OLE DB Programmer's Reference.
Remarks
This method overrides the IRowsetChangeImpl::SetData method but includes caching of original data to permit either immediate or deferred processing of the operation.
IRowsetUpdateImpl::GetOriginalData
Gets the data most recently transmitted to or obtained from the data source, ignoring pending changes.
Syntax
STDMETHOD (GetOriginalData )(HROW hRow,
HACCESSOR hAccessor,
void* pData);
Parameters
See IRowsetUpdate::GetOriginalData in the OLE DB Programmer's Reference.
IRowsetUpdateImpl::GetPendingRows
Returns a list of rows with pending changes.
Syntax
STDMETHOD (GetPendingRows )(HCHAPTER /* hReserved */,
DBPENDINGSTATUS dwRowStatus,
DBCOUNTITEM* pcPendingRows,
HROW** prgPendingRows,
DBPENDINGSTATUS** prgPendingStatus);
Parameters
hReserved
[in] Corresponds to the hChapter parameter in IRowsetUpdate::GetPendingRows.
For other parameters, see IRowsetUpdate::GetPendingRows in the OLE DB Programmer's Reference.
Remarks
For more information, see IRowsetUpdate::GetPendingRows in the OLE DB Programmer's Reference.
IRowsetUpdateImpl::GetRowStatus
Returns the status of specified rows.
Syntax
STDMETHOD (GetRowStatus )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBPENDINGSTATUS rgPendingStatus[]);
Parameters
hReserved
[in] Corresponds to the hChapter parameter in IRowsetUpdate::GetRowStatus.
For other parameters, see IRowsetUpdate::GetRowStatus in the OLE DB Programmer's Reference.
IRowsetUpdateImpl::Undo
Undoes any changes to the row since the last fetch or update.
Syntax
STDMETHOD (Undo )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[ ],
DBCOUNTITEM* pcRowsUndone,
HROW** prgRowsUndone,
DBROWSTATUS** prgRowStatus);
Parameters
hReserved
[in] Corresponds to the hChapter parameter in IRowsetUpdate::Undo.
pcRowsUndone
[out] Corresponds to the pcRows parameter in IRowsetUpdate::Undo.
prgRowsUndone
[in] Corresponds to the prgRows parameter in IRowsetUpdate::Undo.
For other parameters, see IRowsetUpdate::Undo in the OLE DB Programmer's Reference.
IRowsetUpdateImpl::Update
Transmits any changes made to the row since the last fetch or update.
Syntax
STDMETHOD (Update )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBCOUNTITEM* pcRows,
HROW** prgRows,
DBROWSTATUS** prgRowStatus);
Parameters
hReserved
[in] Corresponds to the hChapter parameter in IRowsetUpdate::Update.
For other parameters, see IRowsetUpdate::Update in the OLE DB Programmer's Reference.
Remarks
Changes are transmitted by calling IRowsetChangeImpl::FlushData. The consumer must call CRowset::Update for the changes to take effect. Set prgRowstatus to an appropriate value as described in Row States in the OLE DB Programmer's Reference.
IRowsetUpdateImpl::IsUpdateAllowed
Override this method to check for security, integrity, and so on before updates.
Syntax
HRESULT IsUpdateAllowed(DBPENDINGSTATUS /* [in] */ /* status */,
HROW /* [in] */ /* hRowUpdate */,
DBROWSTATUS* /* [out] */ /* pRowStatus */);
Parameters
status
[in] The status of pending operations on the rows.
hRowUpdate
[in] Handle for the rows the user wants to update.
pRowStatus
[out] The status returned to the user.
Remarks
If you determine that an update should be allowed, returns S_OK; otherwise returns E_FAIL. If you allow an update, you also need to set the DBROWSTATUS
in IRowsetUpdateImpl::Update to an appropriate row state.
IRowsetUpdateImpl::m_mapCachedData
A map containing the original data for the deferred operation.
Syntax
CAtlMap<
HROW hRow,
Storage* pData
>
m_mapCachedData;
Parameters
hRow
Handle to the rows for the data.
pData
A pointer to the data to be cached. The data is of type Storage (the user record class). See the Storage template argument in IRowsetUpdateImpl Class.
See also
OLE DB Provider Templates
OLE DB Provider Template Architecture
Creating an Updatable Provider