Descriptores de acceso y conjuntos de filas
Para establecer y recuperar datos, las plantillas OLE DB usan un descriptor de acceso y un conjunto de filas a través de la clase CAccessorRowset. Esta clase puede manejar varios descriptores de acceso de diferentes tipos.
Tipos de descriptores de acceso
Todos los descriptores de acceso derivan de CAccessorBase. CAccessorBase
proporciona el enlace tanto de parámetros como de columnas.
En la siguiente ilustración se muestran los tipos de descriptores de acceso.
Clases de descriptores de acceso
CAccessor Use este descriptor de acceso cuando conozca la estructura del origen de la base de datos en tiempo de diseño.
CAccessor
enlaza estáticamente un registro de base de datos, que contiene el búfer, al origen de datos.CDynamicAccessor Use este descriptor de acceso cuando no conozca la estructura de la base de datos en tiempo de diseño.
CDynamicAccessor
llamaIColumnsInfo::GetColumnInfo
para obtener la información de la columna de la base de datos. Crea y gestiona un descriptor de acceso y el búfer.CDynamicParameterAccessor Use este descriptor de acceso para controlar los tipos de comandos desconocidos. Al preparar los comandos,
CDynamicParameterAccessor
puede obtener información de parámetros de la interfaz deICommandWithParameters
, si el proveedor admiteICommandWithParameters
.CDynamicStringAccessor, CDynamicStringAccessorA y CDynamicStringAccessorW Use estas clases cuando no tenga conocimientos del esquema de la base de datos.
CDynamicStringAccessorA
recupera datos como cadenas ANSI;CDynamicStringAccessorW
recupera datos como cadenas Unicode.CManualAccessor Con esta clase, puede usar cualquier tipo de datos que desee si el proveedor puede convertir el tipo. Controla tanto columnas de resultados como parámetros de comando.
En la tabla siguiente se resume la compatibilidad con los tipos de descriptores de acceso de plantilla OLE DB.
Tipo de descriptor de acceso | Dinámica | Controla los parámetros | Búfer | Descriptores de acceso múltiples |
---|---|---|---|---|
CAccessor |
No | Sí | Usuario | Sí |
CDynamicAccessor |
Sí | No | plantillas OLE DB | No |
CDynamicParameterAccessor |
Sí | Sí | plantillas OLE DB | No |
CDynamicStringAccessor[A,W] |
Sí | No | plantillas OLE DB | No |
CManualAccessor |
Sí | Sí | Usuario | Sí |
Tipos de conjuntos de filas
Las plantillas OLE DB admiten tres tipos de conjuntos de filas (consulte la ilustración anterior): conjuntos de filas únicos (implementados por CRowset), conjuntos de filas en masa (implementado por CBulkRowset) y conjuntos de filas de matriz (implementados por CArrayRowset). Los conjuntos de filas únicos capturan un identificador de fila único cuando MoveNext
es llamado. Los conjuntos de filas en masa pueden capturar varios identificadores de fila. Los conjuntos de filas de matriz son conjuntos de filas a los que se puede acceder mediante la sintaxis de matriz.
En la siguiente ilustración se muestran los tipos de conjuntos de fila.
Clases de conjunto de fila
Los conjuntos de filas de esquema no tienen acceso a los datos del almacén de datos, sino que acceden a la información sobre el almacén de datos, denominada metadatos. Los conjuntos de filas de esquema se usan normalmente en situaciones en las que la estructura de la base de datos no se conoce en tiempo de compilación y se deben obtener en tiempo de ejecución.