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


Класс CRowsetImpl

Предоставляет стандартную реализацию набора строк OLE DB, не требуя много наследования многих интерфейсов реализации.

Синтаксис

template <
   class T,
   class Storage,
   class CreatorClass,
   class ArrayType = CAtlArray<Storage>,
   class RowClass = CSimpleRow,
   class RowsetInterface = IRowsetImpl <T, IRowset>
>
class CRowsetImpl :
   public CComObjectRootEx<CreatorClass::_ThreadModel>,
   public CRowsetBaseImpl<T, Storage, ArrayType, RowsetInterface>,
   public IRowsetInfoImpl<T, CreatorClass::_PropClass>

Параметры

T
Класс пользователя, производный от CRowsetImpl.

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

CreatorClass
Класс, содержащий свойства набора строк; Обычно команда.

ArrayType
Класс, который будет выступать в качестве хранилища для данных набора строк. Этот параметр по умолчанию используется CAtlArray, но он может быть любым классом, поддерживающим необходимые функциональные возможности.

Требования

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

Участники

Методы

Имя Описание
NameFromDBID Извлекает строку из DBID строки и копирует ее в bstr, переданную в.
SetCommandText Проверяет и сохраняет s DBIDв двух строках (m_strCommandText и m_strIndexText).

Переопределимые методы

Имя Описание
GetColumnInfo Извлекает сведения о столбцах для конкретного запроса клиента.
GetCommandFromID Проверяет, содержат ли оба параметра строковые значения, а если да, копирует строковые значения в элементы данных m_strCommandText и m_strIndexText.
ValidateCommandID Проверяет, содержат ли DBIDоба значения строк, а если да, копирует их в элементы данных m_strCommandText и m_strIndexText.

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

Имя Описание
m_rgRowData По умолчанию CAtlArray для аргумента CRowsetImplшаблона записей пользователя используется шаблон шаблона записи пользователя. Другой класс типа массива можно использовать, изменив ArrayType аргумент CRowsetImplшаблона на .
m_strCommandText Содержит начальную команду набора строк.
m_strIndexText Содержит начальный индекс набора строк.

Замечания

CRowsetImpl предоставляет переопределения в виде статических переадресов. Методы управляют способом проверки текста команды заданного набора строк. Вы можете создать собственный CRowsetImplкласс -style, сделав интерфейсы реализации несколькими наследуемыми. Единственный метод, для которого необходимо предоставить реализацию Execute. В зависимости от типа создаваемого набора строк методы создателя ожидают разные сигнатуры.Execute Например, если для реализации набора строк схемы используется производный CRowsetImplкласс, Execute метод будет иметь следующую подпись:

HRESULT Execute(LONG* pcRows, ULONG cRestrictions, const VARIANT* rgRestrictions)

Если вы создаете производный CRowsetImplкласс для реализации набора строк команды или сеанса, Execute метод будет иметь следующую подпись:

HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)

Чтобы реализовать любой из производных CRowsetImplExecute методов, необходимо заполнить внутренние буферы данных (m_rgRowData).

CRowsetImpl::NameFromDBID

Извлекает строку из DBID строки и копирует ее в bstr, переданную в.

Синтаксис

HRESULT CRowsetBaseImpl::NameFromDBID(DBID* pDBID,
   CComBSTR& bstr,
   bool bIndex);

Параметры

pDBID
[in] Указатель на DBID объект, из которого извлекается строка.

bstr
[in] Ссылка на CComBSTR для размещения копии DBID строки.

bIndex
[in] true Значение , если таблица DBIDfalse DBID.

Возвращаемое значение

Стандартный HRESULT. В зависимости от того, является ли DBID таблица или индекс (обозначается bIndex), метод возвращает DB_E_NOINDEX или DB_E_NOTABLE.

Замечания

Этот метод вызывается CRowsetImpl реализацией ValidateCommandID и GetCommandFromID.

CRowsetImpl::SetCommandText

Проверяет и сохраняет s DBIDв двух строках (m_strCommandText и m_strIndexText).

Синтаксис

HRESULT CRowsetBaseImpl::SetCommandText(DBID* pTableID,
   DBID* pIndexID);

Параметры

pTableID
[in] Указатель на DBID идентификатор таблицы.

pIndexID
[in] Указатель на DBID идентификатор индекса.

Возвращаемое значение

Стандартный HRESULT.

Замечания

Метод SetCommentText вызывается статическим шаблонным методомCreateRowsetIOpenRowsetImpl.

Этот метод делегирует свою работу путем вызова ValidateCommandID и GetCommandFromID через переадресованный указатель.

CRowsetImpl::GetColumnInfo

Извлекает сведения о столбцах для конкретного запроса клиента.

Синтаксис

static ATLCOLUMNINFO* CRowsetBaseImpl::GetColumnInfo(T* pv,
   ULONG* pcCols);

Параметры

pv
[in] Указатель на производный класс пользователя CRowsetImpl .

pcCols
[in] Указатель (выходные данные) на число возвращаемых столбцов.

Возвращаемое значение

Указатель на статическую ATLCOLUMNINFO структуру.

Замечания

Этот метод является расширенным переопределением.

Этот метод вызывается несколькими базовыми классами реализации для получения сведений о столбцах для конкретного запроса клиента. Обычно этот метод вызывается IColumnsInfoImpl. При переопределении этого метода необходимо поместить версию метода в производный CRowsetImplкласс. Так как метод может быть помещен в нестандартный класс, необходимо изменить pv на соответствующий CRowsetImplпроизводный класс.

В следующем примере показано GetColumnInfo использование. В этом примере CMyRowset используется производный CRowsetImplкласс. Чтобы переопределить GetColumnInfo для всех экземпляров этого класса, поместите следующий метод в CMyRowset определение класса:

static ATLCOLUMNINFO* GetColumnInfo(CCustomRowset* pRowset, DBORDINAL* pcCols)
{
   // Add your implementation here and/or call the base class

   return CRowsetImpl::GetColumnInfo(pRowset, pcCols);
}

CRowsetImpl::GetCommandFromID

Проверяет, содержат ли оба параметра строковые значения, а если да, копирует строковые значения в элементы данных m_strCommandText и m_strIndexText.

Синтаксис

HRESULT CRowsetBaseImpl::GetCommandFromID(DBID* pTableID,
   DBID* pIndexID);

Параметры

pTableID
[in] Указатель на DBID идентификатор таблицы.

pIndexID
[in] Указатель на DBID идентификатор индекса.

Возвращаемое значение

Стандартный HRESULT.

Замечания

Этот метод вызывается через статическую рассылку CRowsetImpl , чтобы заполнить элементы данных m_strCommandText и m_strIndexText. По умолчанию этот метод проверяет, содержат ли оба параметра строковые значения. Если они содержат строковые значения, этот метод копирует строковые значения в элементы данных. Поместив метод с этой сигнатурой в производный CRowsetImplкласс, метод будет вызываться вместо базовой реализации.

CRowsetImpl::ValidateCommandID

Проверяет, содержат ли DBIDоба значения строк, а если да, копирует их в элементы данных m_strCommandText и m_strIndexText.

Синтаксис

HRESULT CRowsetBaseImpl::ValidateCommandID(DBID* pTableID,
   DBID* pIndexID);

Параметры

pTableID
[in] Указатель на DBID идентификатор таблицы.

pIndexID
[in] Указатель на DBID идентификатор индекса.

Возвращаемое значение

Стандартный HRESULT.

Замечания

Этот метод вызывается через статическую рассылку CRowsetImpl , чтобы заполнить его элементы данных m_strCommandText и m_strIndexText. По умолчанию этот метод проверяет, содержат ли DBIDоба значения строк, а если да, копирует их в члены данных. Поместив метод с этой сигнатурой в производный CRowsetImplкласс, метод будет вызываться вместо базовой реализации.

CRowsetImpl::m_rgRowData

По умолчанию CAtlArray для аргумента CRowsetImplшаблона записей пользователя используется шаблон шаблона записи пользователя.

Синтаксис

ArrayType CRowsetBaseImpl::m_rgRowData;

Замечания

ArrayType — это параметр CRowsetImplшаблона.

CRowsetImpl::m_strCommandText

Содержит начальную команду набора строк.

Синтаксис

CComBSTR CRowsetBaseImpl::m_strCommandText;

CRowsetImpl::m_strIndexText

Содержит начальный индекс набора строк.

Синтаксис

CComBSTR CRowsetBaseImpl::m_strIndexText;