Класс 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)
Чтобы реализовать любой из производных CRowsetImpl
Execute
методов, необходимо заполнить внутренние буферы данных (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
Значение , если таблица DBID
false
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
вызывается статическим шаблонным методомCreateRowset
IOpenRowsetImpl
.
Этот метод делегирует свою работу путем вызова 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;