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;