Descriptores de acceso y conjuntos de filas
Actualización: noviembre 2007
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 es capaz de controlar múltiples descriptores de acceso de varios tipos.
Tipos de descriptores de acceso
Todos los descriptores de acceso derivan de CAccessorBase. CAccessorBase proporciona enlaces de parámetro y de columna.
La siguiente ilustración muestra 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, con el origen de datos.
CDynamicAccessorUse este descriptor de acceso cuando no conozca la estructura de la base de datos en tiempo de diseño. CDynamicAccessor llama a IColumnsInfo::GetColumnInfo para obtener la información de columna de la base de datos. Crea y administra un descriptor de acceso y el búfer.
CDynamicParameterAccessor Use este descriptor de acceso para controlar tipos de comando desconocidos. Al preparar los comandos, CDynamicParameterAccessor puede obtener información de parámetros de la interfaz ICommandWithParameters, si el proveedor es compatible con el uso de ICommandWithParameters.
CDynamicStringAccessor, CDynamicStringAccessorA y CDynamicStringAccessorW Use estas clases cuando no conozca el esquema de la base de datos. CDynamicStringAccessorA recupera datos como cadenas ANSI; CDynamicStringAccessorW recupera datos como cadenas Unicode.
CManualAccessor Con esta clase se pueden utilizar los tipos de datos que se deseen si el proveedor es capaz de convertir el tipo. Controla tanto columnas de resultados como parámetros de comando.
A continuación se muestra la lista de compatibilidades de los descriptores de acceso de las plantillas OLE DB.
Tipo de descriptor de acceso |
Dinámico |
Controla parámetros |
Búfer |
Múltiples descriptores de acceso |
---|---|---|---|---|
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 (vea la ilustración anterior): conjuntos de filas simples (implementados por CRowset), conjuntos de filas masivos (implementados por CBulkRowset) y conjuntos de filas de matriz (implementados por CArrayRowset). Los conjuntos de filas simples recuperan un único identificador de fila cuando se llama a MoveNext. Los conjuntos de filas masivos pueden recuperar múltiples identificadores de fila. Los conjuntos de filas de matriz son conjuntos de filas a los que se puede tener acceso por medio de la sintaxis de matrices.
La siguiente ilustración muestra los tipos de conjuntos de filas.
Clases de conjuntos de filas
Los conjuntos de filas de esquema no obtienen acceso a los datos del almacén de datos, pero sí a la información acerca de éste, denominada metadatos. Los conjuntos de filas de esquema se usan normalmente en situaciones en las que no se conoce la estructura de la base de datos en tiempo de compilación y es necesario obtenerla en tiempo de ejecución.