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


Класс IRowsetLocateImpl

Реализует интерфейс OLE DB IRowsetLocate , который извлекает произвольные строки из набора строк.

Синтаксис

template <
   class T,
   class RowsetInterface,
   class RowClass = CSimpleRow,
   class MapClass = CAtlMap < RowClass::KeyType, RowClass* >,
   class BookmarkKeyType = LONG,
   class BookmarkType = LONG,
   class BookmarkMapClass = CAtlMap < RowClass::KeyType, RowClass* >>
class ATL_NO_VTABLE IRowsetLocateImpl : public IRowsetImpl<
       T,
       RowsetInterface,
       RowClass,
       MapClass>

Параметры

T
Класс, производный от IRowsetLocateImpl.

RowsetInterface
Класс, производный от IRowsetImpl.

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

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

BookmarkKeyType
Тип закладки, например LONG или строка. Обычные закладки должны иметь по крайней мере две байты. (Длина одного байта зарезервирована для стандартных закладокDBBMK_FIRST OLE DB и DBBMK_LASTDBBMK_INVALID.)

ЗакладкаType
Механизм сопоставления для поддержания связей между закладками и данными.

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

Требования

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

Участники

Методы интерфейса

Имя Описание
Сравнить Сравнивает две закладки.
GetRowsAt Извлекает строки, начиная с строки, указанной смещением из закладки.
GetRowsByBookmark Извлекает строки, соответствующие указанным закладкам.
Hash Возвращает хэш-значения для указанных закладок.

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

Имя Описание
m_rgBookmarks Массив закладок.

Замечания

IRowsetLocateImpl — реализация шаблонов OLE DB интерфейса IRowsetLocate . IRowsetLocate используется для получения произвольных строк из набора строк. Набор строк, который не реализует этот интерфейс, является набором sequential строк. При IRowsetLocate наличии в наборе строк столбец 0 является закладкой для строк. При чтении этого столбца будет получено значение закладки, которое можно использовать для изменения положения в той же строке.

IRowsetLocateImpl используется для реализации поддержки закладок в поставщиках. Закладки — это заполнители (индексы в наборе строк), которые позволяют потребителю быстро возвращаться к строке, что позволяет быстро получать доступ к данным. Поставщик определяет, какие закладки могут однозначно идентифицировать строку. С помощью IRowsetLocateImpl методов можно сравнивать закладки, получать строки по смещениям, получать строки по закладкам и возвращать хэш-значения для закладок.

Чтобы поддерживать закладки OLE DB в наборе строк, сделайте набор строк наследуемым от этого класса.

Сведения о реализации поддержки закладок см. в руководстве и закладках программиста Visual C++ в справочнике программиста OLE DB в пакете SDK для платформы.

IRowsetLocateImpl::Compare

Сравнивает две закладки.

Синтаксис

STDMETHOD (Compare )(HCHAPTER /* hReserved */,
   DBBKMARK cbBookmark1,
   const BYTE* pBookmark1,
   DBBKMARK cbBookmark2,
   const BYTE* pBookmark2,
   DBCOMPARE* pComparison);

Параметры

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

Замечания

Любой из закладок может быть стандартной стандартной закладкой OLE DB (DBBMK_FIRST, DBBMK_LASTилиDBBMK_INVALID). Возвращаемое pComparison значение указывает связь между двумя закладками:

  • DBCOMPARE_LT (cbBookmark1 до cbBookmark2.)

  • DBCOMPARE_EQ (cbBookmark1 равно cbBookmark2.)

  • DBCOMPARE_GT (cbBookmark1 после cbBookmark2.)

  • DBCOMPARE_NE (Закладки равны и не упорядочены.)

  • DBCOMPARE_NOTCOMPARABLE (Не удается сравнить закладки.)

IRowsetLocateImpl::GetRowsAt

Извлекает строки, начиная с строки, указанной смещением из закладки.

Синтаксис

STDMETHOD (GetRowsAt )(HWATCHREGION /* hReserved1 */,
   HCHAPTER hReserved2,
   DBBKMARK cbBookmark,
   const BYTE* pBookmark,
   DBROWOFFSET lRowsOffset,
   DBROWCOUNT cRows,
   DBCOUNTITEM* pcRowsObtained,
   HROW** prghRows);

Параметры

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

Замечания

Чтобы получить из позиции курсора, используйте IRowset::GetRowsAt.

IRowsetLocateImpl::GetRowsAt не изменяет положение курсора.

IRowsetLocateImpl::GetRowsByBookmark

Извлекает одну или несколько строк, которые соответствуют указанным закладкам.

Синтаксис

STDMETHOD (GetRowsByBookmark )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const DBBKMARK rgcbBookmarks[],
   const BYTE* rgpBookmarks,
   HROW rghRows[],
   DBROWSTATUS* rgRowStatus[]);

Параметры

hReserved
[in] Соответствует параметру hChapter для IRowsetLocate::GetRowsByBookmark.

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

Замечания

Закладка может быть значением, определенным или стандартными закладками OLE DB (DBBMK_FIRSTилиDBBMK_LAST). Не изменяет положение курсора.

IRowsetLocateImpl::Hash

Возвращает хэш-значения для указанных закладок.

Синтаксис

STDMETHOD (Hash )(HCHAPTER /* hReserved */,
   DBBKMARK cbBookmarks,
   const DBBKMARK* rgcbBookmarks[],
   const BYTE* rgpBookmarks[],
   DBHASHVALUE rgHashValues[],
   DBROWSTATUS rgBookmarkStatus[]);

Параметры

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

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

IRowsetLocateImpl::m_rgBookmarks

Массив закладок.

Синтаксис

CAtlArray<DBROWCOUNT> m_rgBookmarks;

См. также

Шаблоны поставщика OLE DB
Архитектура шаблона поставщика OLE DB
Поддержка поставщика IRowsetLocate:IRowsetprovider for Bookmarks
Закладки