Поделиться через


Класс IRowsetUpdateImpl

Реализация шаблонов OLE DB интерфейса IRowsetUpdate .

Синтаксис

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.

Память
Запись пользователя.

UpdateArray
Массив, содержащий кэшированные данные для обновления набора строк.

RowClass
Единица HROWхранения для .

MapClass
Единица хранения для всех дескрипторов строк, удерживаемых поставщиком.

Требования

Заголовок: atldb.h

Участники

Методы интерфейса (используемые с IRowsetChange)

Имя Описание
SetData Задает значения данных в одном или нескольких столбцах.

Методы интерфейса (используемые с IRowsetUpdate)

Имя Описание
GetOriginalData Возвращает последние данные, передаваемые в источник данных или полученные из источника данных, игнорируя ожидающие изменения.
GetPendingRows Возвращает список строк с ожидающих изменений.
GetRowStatus Возвращает состояние указанных строк.
Отменить Отменяет любые изменения строки с момента последнего получения или обновления.
Update Передает все изменения, внесенные в строку с момента последнего получения или обновления.

Методы реализации (обратный вызов)

Имя Описание
IsUpdateAllowed Используется для проверки безопасности, целостности и т. д. перед разрешением обновлений.

Элементы данных

Имя Описание
m_mapCachedData Содержит исходные данные для отложенной операции.

Замечания

Сначала следует прочитать и понять документацию для IRowsetChange, так как все описанное здесь также применимо. Вы также должны прочитать главу 6 справочника программиста OLE DB по настройке данных.

IRowsetUpdateImpl реализует интерфейс OLE DB IRowsetUpdate , который позволяет потребителям отложить передачу изменений, внесенных в IRowsetChange источник данных, и отменить изменения перед передачей.

Внимание

Настоятельно рекомендуется ознакомиться со следующей документацией ПЕРЕД попыткой реализовать поставщика:

IRowsetUpdateImpl::SetData

Задает значения данных в одном или нескольких столбцах.

Синтаксис

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

Параметры

См. раздел IRowsetChange::SetData в справочнике программиста OLE DB.

Замечания

Этот метод переопределяет метод IRowsetChangeImpl::SetData , но включает кэширование исходных данных для разрешения немедленной или отложенной обработки операции.

IRowsetUpdateImpl::GetOriginalData

Возвращает последние данные, передаваемые в источник данных или полученные из источника данных, игнорируя ожидающие изменения.

Синтаксис

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

Параметры

См. раздел IRowsetUpdate::GetOriginalData в справочнике программиста OLE DB.

IRowsetUpdateImpl::GetPendingRows

Возвращает список строк с ожидающих изменений.

Синтаксис

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

Параметры

hReserved
[in] Соответствует параметру hChapter в IRowsetUpdate::GetPendingRows.

Дополнительные параметры см. в разделе IRowsetUpdate::GetPendingRows в справочнике программиста OLE DB.

Замечания

Дополнительные сведения см. в разделе IRowsetUpdate::GetPendingRows в справочнике программиста OLE DB.

IRowsetUpdateImpl::GetRowStatus

Возвращает состояние указанных строк.

Синтаксис

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

Параметры

hReserved
[in] Соответствует параметру hChapter в IRowsetUpdate::GetRowStatus.

Дополнительные параметры см. в разделе IRowsetUpdate::GetRowStatus в справочнике программиста OLE DB.

IRowsetUpdateImpl::Undo

Отменяет любые изменения строки с момента последнего получения или обновления.

Синтаксис

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

Параметры

hReserved
[in] Соответствует параметру hChapter в IRowsetUpdate::Undo.

pcRowsUndone
[out] Соответствует параметру pcRows в IRowsetUpdate::Undo.

prgRowsUndone
[in] Соответствует параметру prgRows в IRowsetUpdate::Undo.

Дополнительные параметры см. в разделе IRowsetUpdate::Undo в справочнике программиста OLE DB.

IRowsetUpdateImpl::Update

Передает все изменения, внесенные в строку с момента последнего получения или обновления.

Синтаксис

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

Параметры

hReserved
[in] Соответствует параметру hChapter в IRowsetUpdate::Update.

Дополнительные параметры см. в разделе IRowsetUpdate::Update в справочнике программиста OLE DB.

Замечания

Изменения передаются путем вызова IRowsetChangeImpl::FlushData. Потребитель должен вызвать CRowset::Update , чтобы изменения вступили в силу. Задайте prgRowstatus соответствующее значение, как описано в разделе "Состояния строк" в справочнике программиста OLE DB.

IRowsetUpdateImpl::IsUpdateAllowed

Переопределите этот метод, чтобы проверить безопасность, целостность и т. д. перед обновлениями.

Синтаксис

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

Параметры

состояние
[in] Состояние ожидающих операций с строками.

hRowUpdate
[in] Обработка строк, которые пользователь хочет обновить.

pRowStatus
[out] Состояние, возвращенное пользователю.

Замечания

Если вы определите, что обновление должно быть разрешено, возвращает S_OK; в противном случае возвращает E_FAIL. Если вы разрешаете обновление, необходимо также задать DBROWSTATUS в IRowsetUpdateImpl::Update соответствующее состояние строки.

IRowsetUpdateImpl::m_mapCachedData

Карта, содержащая исходные данные для отложенной операции.

Синтаксис

CAtlMap<
   HROW hRow,
   Storage* pData
>
m_mapCachedData;

Параметры

hRow
Обработка строк для данных.

pData
Указатель на данные, которые нужно кэшировать. Данные являются типом Storage (класс записи пользователя). См. аргумент шаблона хранилища в классе IRowsetUpdateImpl.

См. также

Шаблоны поставщика OLE DB
Архитектура шаблона поставщика OLE DB
Создание поставщика с возможностью записи