Compartir a través de


CRowsetImpl (Clase)

Proporciona una implementación estándar del conjunto de filas OLE DB sin necesidad de herencia múltiple de muchas interfaces de implementación.

Sintaxis

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>

Parámetros

T
Clase del usuario que se deriva de CRowsetImpl.

Storage
Clase del registro de usuario.

CreatorClass
Clase que contiene propiedades para el conjunto de filas; normalmente, el comando.

ArrayType
Clase que actuará como almacenamiento para los datos del conjunto de filas. Este parámetro tiene CAtlArray como valor predeterminado, pero puede ser cualquier clase que admita la funcionalidad necesaria.

Requisitos

Encabezado: atldb.h

Miembros

Métodos

Nombre Descripción
NameFromDBID Extrae una cadena de DBID y la copia en el bstr pasado.
SetCommandText Valida y almacena los valores DBID en las dos cadenas (m_strCommandText y m_strIndexText).

Métodos reemplazables

Nombre Descripción
GetColumnInfo Recupera información de columna para una solicitud de cliente determinada.
GetCommandFromID Comprueba si uno o ambos parámetros contienen valores de cadena, y si es así, los copia en los miembros de datos m_strCommandText y m_strIndexText.
ValidateCommandID Comprueba si uno o ambos valores DBID contienen valores de cadena, y si es así, los copia en sus miembros de datos m_strCommandText y m_strIndexText.

Miembros de datos

Nombre Descripción
m_rgRowData De forma predeterminada, un objeto CAtlArray que crea plantillas en el argumento de plantilla de registro de usuario en CRowsetImpl. Se puede usar otra clase de tipo de matriz cambiando el argumento de plantilla ArrayType a CRowsetImpl.
m_strCommandText Contiene el comando inicial del conjunto de filas.
m_strIndexText Contiene el índice inicial del conjunto de filas.

Comentarios

CRowsetImpl proporciona invalidaciones en forma de conversión a tipo básico estática. Los métodos controlan la manera en que un conjunto de filas determinado validará el texto del comando. Puede crear su propia clase de estilo CRowsetImpl haciendo que sus interfaces de implementación sean de herencia múltiple. El único método para el que debe proporcionar la implementación es Execute. En función del tipo de conjunto de filas que cree, los métodos de creador esperarán firmas diferentes para Execute. Por ejemplo, si usa una clase derivada de CRowsetImpl para implementar un conjunto de filas de esquema, el método Execute tendrá la siguiente firma:

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

Si va a crear una clase derivada de CRowsetImpl para implementar un conjunto de filas de comando o sesión, el método Execute tendrá la siguiente firma:

HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)

Para implementar cualquiera de los métodos Execute derivados de CRowsetImpl, debe rellenar los búferes de datos internos (m_rgRowData).

CRowsetImpl::NameFromDBID

Extrae una cadena de DBID y la copia en el bstr pasado.

Sintaxis

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

Parámetros

pDBID
[in] Puntero al objeto DBID desde el que se va a extraer una cadena.

Bstr
[in] Referencia de CComBSTR para colocar una copia de la cadena DBID.

bIndex
[in] true si un índice DBID; false si una tabla DBID.

Valor devuelto

Un HRESULT estándar. Dependiendo de si DBID es una tabla o un índice (indicado por bIndex), el método devolverá DB_E_NOINDEX o DB_E_NOTABLE.

Comentarios

Las implementaciones CRowsetImpl de ValidateCommandID and GetCommandFromID llaman a este método.

CRowsetImpl::SetCommandText

Valida y almacena los valores DBID en las dos cadenas (m_strCommandText y m_strIndexText).

Sintaxis

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

Parámetros

pTableID
[in] Puntero a DBID que representa el identificador de tabla.

pIndexID
[in] Puntero a DBID que representa el identificador de índice.

Valor devuelto

Un HRESULT estándar.

Comentarios

Se llama al método SetCommentText se llama mediante CreateRowset, un método estático con plantillas de IOpenRowsetImpl.

Este método delega su trabajo llamando a ValidateCommandID y GetCommandFromID a través de un puntero con conversión hacia arriba.

CRowsetImpl::GetColumnInfo

Recupera información de columna para una solicitud de cliente determinada.

Sintaxis

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

Parámetros

pv
[in] Puntero a la clase derivada CRowsetImpl del usuario.

pcCols
[in] Puntero (salida) al número de columnas devueltas.

Valor devuelto

Puntero a una estructura ATLCOLUMNINFO estática.

Comentarios

Este método es una invalidación avanzada.

Varias clases de implementación base llaman a este método para recuperar información de columna para una solicitud de cliente determinada. Normalmente, se llamaría a este método mediante IColumnsInfoImpl. Si invalida este método, debe colocar una versión del método en la clase derivada de CRowsetImpl. Dado que el método se puede colocar en una clase sin plantillas, debe cambiar pv a la clase derivada de CRowsetImpl adecuada.

En el siguiente ejemplo se demuestra el uso de GetColumnInfo. En este ejemplo, CMyRowset es una clase derivada de CRowsetImpl. Para invalidar GetColumnInfo para todas las instancias de esta clase, coloque el método siguiente en la definición de clase 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

Comprueba si uno o ambos parámetros contienen valores de cadena, y si es así, los copia en los miembros de datos m_strCommandText y m_strIndexText.

Sintaxis

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

Parámetros

pTableID
[in] Puntero a DBID que representa el identificador de tabla.

pIndexID
[in] Puntero a DBID que representa el identificador de índice.

Valor devuelto

Un HRESULT estándar.

Comentarios

A este método se le llama a través de una conversión estática mediante CRowsetImpl para rellenar los miembros de datos m_strCommandText y m_strIndexText. De forma predeterminada, este método comprueba si uno o ambos parámetros contienen valores de cadena. Si contienen valores de cadena, este método copia los valores de cadena en los miembros de datos. Al colocar un método con esta firma en la clase derivada de CRowsetImpl, se llamará al método en lugar de a la implementación base.

CRowsetImpl::ValidateCommandID

Comprueba si uno o ambos valores DBID contienen valores de cadena, y si es así, los copia en sus miembros de datos m_strCommandText y m_strIndexText.

Sintaxis

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

Parámetros

pTableID
[in] Puntero a DBID que representa el identificador de tabla.

pIndexID
[in] Puntero a DBID que representa el identificador de índice.

Valor devuelto

Un HRESULT estándar.

Comentarios

A este método se le llama a través de una conversión estática mediante CRowsetImpl para rellenar los miembros de datos m_strCommandText y m_strIndexText. De forma predeterminada, este método comprueba si uno o ambos valores DBID contienen valores de cadena, y si es así, los copia en sus miembros de datos. Al colocar un método con esta firma en la clase derivada de CRowsetImpl, se llamará al método en lugar de a la implementación base.

CRowsetImpl::m_rgRowData

De forma predeterminada, un objeto CAtlArray que crea plantillas en el argumento de plantilla de registro de usuario en CRowsetImpl.

Sintaxis

ArrayType CRowsetBaseImpl::m_rgRowData;

Comentarios

ArrayType es un parámetro de plantilla para CRowsetImpl.

CRowsetImpl::m_strCommandText

Contiene el comando inicial del conjunto de filas.

Sintaxis

CComBSTR CRowsetBaseImpl::m_strCommandText;

CRowsetImpl::m_strIndexText

Contiene el índice inicial del conjunto de filas.

Sintaxis

CComBSTR CRowsetBaseImpl::m_strIndexText;