Arquitectura de plantillas de proveedores OLE DB
Orígenes de datos y sesiones
La arquitectura de proveedor OLE DB incluye un objeto de origen de datos y una o más sesiones. El objeto de origen de datos es el objeto de inicio del que todo proveedor debe crear una instancia. Cuando una aplicación de consumidor necesita datos, participa en la creación del objeto de origen de datos para iniciar el proveedor. El objeto de origen de datos crea un objeto de sesión (mediante la interfaz IDBCreateSession) a través del cuál el consumidor se conecta al objeto de origen de datos. Los programadores de ODBC pueden considerar que el objeto de origen de datos es equivalente a HENV y el objeto de sesión, equivalente a HDBC.
Junto con los archivos de código fuente creados por el Asistente para proveedores OLE DB, las plantillas OLE DB implementan un objeto de origen de datos. Una sesión es un objeto que corresponde al TSession de OLE DB.
Interfaces obligatorias e interfaces opcionales
Las plantillas de proveedor OLE DB proporcionan implementaciones ya preparadas para todas las interfaces necesarias. OLE DB define interfaces obligatorias e interfaces opcionales para varios tipos de objetos:
Tenga en cuenta que las plantillas de proveedor OLE DB no implementan los objetos de fila y de almacenamiento.
En la tabla siguiente se muestran las interfaces obligatorias y opcionales para los objetos anteriores, según la Documentación del SDK de OLE DB 2.6.
Componente |
Interfaz |
Comentario |
---|---|---|
[obligatoria] IDBCreateSession [obligatoria] IDBInitialize [obligatoria] IDBProperties [obligatoria] IPersist [opcional] IConnectionPointContainer [opcional] IDBAsynchStatus [opcional] IDBDataSourceAdmin [opcional] IDBInfo [opcional] IPersistFile [opcional] ISupportErrorInfo |
Conexión desde el consumidor al proveedor. El objeto se utiliza para especificar propiedades en la conexión, como el identificador de usuario, la contraseña y el nombre del origen de datos. También se puede utilizar el objeto para administrar un origen de datos (crear, actualizar, eliminar, tablas, etc.). |
|
[obligatoria] IGetDataSource [obligatoria] IOpenRowset [obligatoria] ISessionProperties [opcional] IAlterIndex [opcional] IAlterTable [opcional] IBindResource [opcional] ICreateRow [opcional] IDBCreateCommand [opcional] IDBSchemaRowset [opcional] IIndexDefinition [opcional] ISupportErrorInfo [opcional] ITableCreation [opcional] ITableDefinition [opcional] ITableDefinitionWithConstraints [opcional] ITransaction [opcional] ITransactionJoin [opcional] ITransactionLocal [opcional] ITransactionObject |
El objeto de sesión representa una sola conversación entre un consumidor y un proveedor. Se parece en cierto modo al HSTMT de ODBC en el que puede haber muchas sesiones activas simultáneamente. El objeto de sesión es el vínculo principal para obtener la funcionalidad de OLE DB. Para obtener un objeto de comando, de transacción o de conjunto de filas, debe utilizar el objeto de sesión. |
|
[obligatoria] IAccessor [obligatoria] IColumnsInfo [obligatoria] IConvertType [obligatoria] IRowset [obligatoria] IRowsetInfo [opcional] IChapteredRowset [opcional] IColumnsInfo2 [opcional] IColumnsRowset [opcional] IConnectionPointContainer [opcional] IDBAsynchStatus [opcional] IGetRow [opcional] IRowsetChange [opcional] IRowsetChapterMember [opcional] IRowsetCurrentIndex [opcional] IRowsetFind [opcional] IRowsetIdentity [opcional] IRowsetIndex [opcional] IRowsetLocate [opcional] IRowsetRefresh [opcional] IRowsetScroll [opcional] IRowsetUpdate [opcional] IRowsetView [opcional] ISupportErrorInfo [opcional] IRowsetBookmark |
El objeto de conjunto de filas representa los datos del origen de datos. Este objeto se encarga de los enlaces de esos datos y de las operaciones básicas (actualización, búsqueda, transferencia, entre otras) realizadas con los datos. Siempre tiene un objeto de conjunto de filas para contener y manipular datos. |
|
[obligatoria] IAccessor [obligatoria] IColumnsInfo [obligatoria] ICommand [obligatoria] ICommandProperties [obligatoria] ICommandText [obligatoria] IConvertType [opcional] IColumnsRowset [opcional] ICommandPersist [opcional] ICommandPrepare [opcional] ICommandWithParameters [opcional] ISupportErrorInfo [opcional] ICommandStream |
El objeto de comando controla operaciones realizadas con los datos, tales como consultas. Puede controlar instrucciones parametrizadas e instrucciones no parametrizadas. El objeto de comando también se encarga de controlar los enlaces para parámetros y columnas de resultados. Un enlace es una estructura que contiene información sobre cómo recuperar una columna de un conjunto de filas. Contiene información como, por ejemplo, el ordinal, el tipo de datos, la longitud y el estado. |
|
Transacción (opcional) |
[obligatoria] IConnectionPointContainer [obligatoria] ITransaction [opcional] ISupportErrorInfo |
El objeto de transacción define una unidad atómica de trabajo en un origen de datos y determina la relación entre las unidades de trabajo. Las plantillas de proveedor OLE DB no ofrecen directamente compatibilidad con este objeto (es decir, el programador debe crear su propio objeto). |
Para obtener más información, vea los temas siguientes: