Класс 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_LAST
DBBMK_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
Закладки