Compartir a través de


El Administrador de controladores

El Administrador de controladores es una biblioteca que administra la comunicación entre aplicaciones y controladores. Por ejemplo, en las plataformas de Microsoft Windows, el Administrador de controladores es una biblioteca de vínculos dinámicos (DLL) escrita por Microsoft y que los usuarios del SDK del componente redistribuible MDAC 2.8 SP1 pueden redistribuir.

El Administrador de controladores existe principalmente como una utilidad para los escritores de aplicaciones y resuelve una serie de problemas comunes a todas las aplicaciones. Estos incluyen determinar qué controlador cargar en función de un nombre de origen de datos, cargar y descargar controladores y llamar a funciones en controladores.

Para ver por qué este último es un problema, considere qué sucedería si la aplicación llamara a funciones en el controlador directamente. A menos que la aplicación se vincule directamente a un controlador determinado, tendría que crear una tabla de punteros a las funciones de ese controlador y llamar a esas funciones por puntero. El uso del mismo código para más de un controlador a la vez agregaría otro nivel de complejidad. La aplicación tendría que establecer primero un puntero de función para que apunte a la función correcta en el controlador correcto y, a continuación, llamar a la función mediante ese puntero.

El Administrador de controladores resuelve este problema proporcionando un único lugar para llamar a cada función. La aplicación está vinculada al Administrador de controladores y llama a funciones de ODBC en el Administrador de controladores, no al controlador. La aplicación identifica el controlador de destino y el origen de datos con un identificador de conexión. Cuando carga un controlador, el Administrador de controladores crea una tabla de punteros a las funciones de ese controlador. Usa el identificador de conexión pasado por la aplicación para buscar la dirección de la función en el controlador de destino y llama a esa función por dirección.

Por lo general, el Administrador de controladores simplemente pasa llamadas de función de la aplicación al controlador correcto. Sin embargo, también implementa algunas funciones (SQLDataSources, SQLDrivers y SQLGetFunctions) y realiza una comprobación de errores básica. Por ejemplo, el Administrador de controladores comprueba que los identificadores no son punteros NULL, que las funciones se llaman en el orden correcto y que determinados argumentos de función son válidos. Para obtener una descripción completa de los errores que comprueba el Administrador de controladores, vea la sección de referencia de cada función y Apéndice B: Tablas de transición de estado de ODBC.

El rol principal final del Administrador de controladores es cargar y descargar controladores. La aplicación carga y descarga solo el Administrador de controladores. Cuando quiere usar un controlador determinado, llama a una función de conexión (SQLConnect, SQLDriverConnect o SQLBrowseConnect) en el Administrador de controladores y especifica el nombre de un origen de datos o controlador determinado, como "Contabilidad" o "SQL Server". Con este nombre, el Administrador de controladores busca en la información del origen de datos el nombre de archivo del controlador, como Sqlsrvr.dll. A continuación, carga el controlador (suponiendo que aún no esté cargado), almacena la dirección de cada función en el controlador y llama a la función de conexión en el controlador, que luego se inicializa y se conecta al origen de datos.

Cuando la aplicación se realiza mediante el controlador, llama a SQLDisconnect en el Administrador de controladores. El Administrador de controladores llama a esta función en el controlador, que se desconecta del origen de datos. Sin embargo, el Administrador de controladores mantiene el controlador en la memoria en caso de que la aplicación se vuelva a conectar a él. Descarga el controlador solo cuando la aplicación libera la conexión usada por el controlador o usa la conexión para otro controlador, y ninguna otra conexión usa el controlador. Para obtener una descripción completa del rol del Administrador de controladores en la carga y descarga de controladores, consulte el Rol del Administrador de controladores en el proceso de conexión.