IRowsetUpdateImpl 類別
IRowsetUpdate 介面的 OLE DB 範本實作。
語法
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>
參數
T
衍生自 IRowsetUpdateImpl
的類別。
Storage
用戶記錄。
UpdateArray
數位,包含用於更新數據列集的快取數據。
RowClass
的 HROW
儲存單位。
MapClass
提供者所持有之所有數據列句柄的儲存單位。
需求
Header: atldb.h
成員
介面方法 (與 IRowsetChange 搭配使用)
名稱 | 描述 |
---|---|
SetData | 設定一個或多個數據行中的數據值。 |
介面方法 (與 IRowsetUpdate 搭配使用)
名稱 | 描述 |
---|---|
GetOriginalData | 取得最近傳送至數據源或從數據源取得的數據,忽略暫止的變更。 |
GetPendingRows | 傳回具有暫止變更的數據列清單。 |
GetRowStatus | 傳回指定數據列的狀態。 |
復原 | 復原自上次擷取或更新之後對數據列所做的任何變更。 |
更新 | 傳輸自上次擷取或更新之後對數據列所做的任何變更。 |
實作方法(回呼)
名稱 | 描述 |
---|---|
IsUpdateAllowed | 用來檢查安全性、完整性等等,再允許更新。 |
資料成員
名稱 | 描述 |
---|---|
m_mapCachedData | 包含延遲作業的原始數據。 |
備註
您應該先閱讀並瞭解 IRowsetChange 的文件,因為這裡所述的一切也適用於這裡。 您也應該閱讀 OLE DB 程式設計人員關於設定數據的第 6 章。
IRowsetUpdateImpl
會實作 OLE DB IRowsetUpdate
介面,這可讓取用者延遲傳輸對數據源所做的 IRowsetChange
變更,並在傳輸之前復原變更。
重要
強烈建議您在嘗試實作提供者之前先閱讀下列檔:
IRowsetUpdateImpl::SetData
設定一個或多個數據行中的數據值。
語法
STDMETHOD (SetData )(HROW hRow,
HACCESSOR hAccessor,
void* pSrcData);
參數
請參閱 OLE DB 程式設計人員參考中的 IRowsetChange::SetData。
備註
此方法會 覆寫 IRowsetChangeImpl::SetData 方法,但包含原始數據的快取,以允許立即或延遲處理作業。
IRowsetUpdateImpl::GetOriginalData
取得最近傳送至數據源或從數據源取得的數據,忽略暫止的變更。
語法
STDMETHOD (GetOriginalData )(HROW hRow,
HACCESSOR hAccessor,
void* pData);
參數
請參閱 OLE DB 程式設計人員參考中的 IRowsetUpdate::GetOriginalData。
IRowsetUpdateImpl::GetPendingRows
傳回具有暫止變更的數據列清單。
語法
STDMETHOD (GetPendingRows )(HCHAPTER /* hReserved */,
DBPENDINGSTATUS dwRowStatus,
DBCOUNTITEM* pcPendingRows,
HROW** prgPendingRows,
DBPENDINGSTATUS** prgPendingStatus);
參數
hReserved
[in]對應至 IRowsetUpdate::GetPendingRows 中的 hChapter 參數。
如需其他參數,請參閱 OLE DB 程式設計人員參考中的 IRowsetUpdate::GetPendingRows。
備註
如需詳細資訊,請參閱 OLE DB 程式設計人員參考中的 IRowsetUpdate::GetPendingRows。
IRowsetUpdateImpl::GetRowStatus
傳回指定數據列的狀態。
語法
STDMETHOD (GetRowStatus )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBPENDINGSTATUS rgPendingStatus[]);
參數
hReserved
[in]對應至 IRowsetUpdate::GetRowStatus 中的 hChapter 參數。
如需其他參數,請參閱 OLE DB 程式設計人員參考中的 IRowsetUpdate::GetRowStatus。
IRowsetUpdateImpl::Undo
復原自上次擷取或更新之後對數據列所做的任何變更。
語法
STDMETHOD (Undo )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[ ],
DBCOUNTITEM* pcRowsUndone,
HROW** prgRowsUndone,
DBROWSTATUS** prgRowStatus);
參數
hReserved
[in]對應至 IRowsetUpdate::Undo 中的 hChapter 參數。
pcRowsUndone
[out]對應至 IRowsetUpdate::Undo 中的 pcRows 參數。
prgRowsUndone
[in]對應至 IRowsetUpdate::Undo 中的 prgRows 參數。
如需其他參數,請參閱 OLE DB 程式設計人員參考中的 IRowsetUpdate::Undo。
IRowsetUpdateImpl::Update
傳輸自上次擷取或更新之後對數據列所做的任何變更。
語法
STDMETHOD (Update )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBCOUNTITEM* pcRows,
HROW** prgRows,
DBROWSTATUS** prgRowStatus);
參數
hReserved
[in]對應至 IRowsetUpdate::Update 中的 hChapter 參數。
如需其他參數,請參閱 OLE DB 程式設計人員參考中的 IRowsetUpdate::Update。
備註
變更會藉由呼叫 IRowsetChangeImpl::FlushData 來傳輸。 取用者必須呼叫 CRowset::Update ,變更才會生效。 將 prgRowstatus 設定為適當的值,如 OLE DB 程式設計人員參考中的數據列狀態中所述。
IRowsetUpdateImpl::IsUpdateAllowed
覆寫此方法以在更新之前檢查安全性、完整性等等。
語法
HRESULT IsUpdateAllowed(DBPENDINGSTATUS /* [in] */ /* status */,
HROW /* [in] */ /* hRowUpdate */,
DBROWSTATUS* /* [out] */ /* pRowStatus */);
參數
status
[in]數據列上暫止作業的狀態。
hRowUpdate
[in]使用者想要更新的數據列句柄。
pRowStatus
[out]傳回給用戶的狀態。
備註
如果您判斷應該允許更新,則會傳回S_OK;否則會傳回E_FAIL。 如果您允許更新,您也需要將 IRowsetUpdateImpl::Update 中的 設定DBROWSTATUS
為適當的數據列狀態。
IRowsetUpdateImpl::m_mapCachedData
對應,包含延遲作業的原始數據。
語法
CAtlMap<
HROW hRow,
Storage* pData
>
m_mapCachedData;
參數
hRow
數據列的句柄。
pData
要快取之數據的指標。 數據的類型 為 Storage (使用者記錄類別)。 請參閱 IRowsetUpdateImpl 類別中的記憶體範本自變數。