Origen de datos: Configurar un origen de datos ODBC mediante programación

En este tema se explica cómo configurar nombres de origen de datos de conectividad abierta de bases de datos (ODBC) mediante programación. Esto proporciona flexibilidad para acceder a los datos sin forzar al usuario a usar explícitamente el administrador de ODBC u otros programas para especificar los nombres de los orígenes de datos.

Normalmente, un usuario ejecuta el administrador de ODBC para crear un origen de datos si el sistema de administración de bases de datos (DBMS) asociado admite esta operación.

Al crear un origen de datos ODBC de Microsoft Access mediante el administrador de ODBC, existen dos posibilidades: seleccionar un archivo .mdb existente o crear uno nuevo. No existe ninguna manera de crear el archivo .mdb mediante programación desde la aplicación ODBC de MFC. Por lo tanto, si la aplicación requiere colocar datos en un origen de datos de Microsoft Access (archivo .mdb), probablemente lo más conveniente sea tener un archivo .mdb vacío que pueda usar o copiar siempre que lo necesite.

Sin embargo, muchos DBMS permiten la creación de orígenes de datos mediante programación. Algunos orígenes de datos mantienen una especificación de directorio para las bases de datos; es decir, un directorio es el origen de datos y cada tabla de ese origen de datos se almacena en un archivo aparte (en el caso de dBASE, cada tabla es un archivo .dbf). Los controladores de otras bases de datos ODBC, como Microsoft Access y SQL Server, requieren el cumplimiento de algunos criterios específicos antes de que se pueda establecer un origen de datos. Por ejemplo, al usar el controlador ODBC de SQL Server, debe haber configurado un equipo de SQL Server.

Ejemplo de SQLConfigDataSource

En el siguiente ejemplo se usa la función de API ODBC ::SQLConfigDataSource para crear un origen de datos de Excel nuevo denominado Nuevo origen de datos de Excel:

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Excel Files (*.xls)",
                   "DSN=New Excel Data Source\0"
                   "Description=New Excel Data Source\0"
                   "FileType=Excel\0"
                   "DataDirectory=C:\\EXCELDIR\0"
                   "MaxScanRows=20\0");

Fíjese en que el origen de datos es en realidad un directorio (C:\EXCELDIR). Este directorio debe existir. El controlador de Excel usa directorios como orígenes de datos y archivos como tablas individuales (una tabla por archivo .xls).

Para obtener más información sobre cómo crear tablas, vea Origen de datos: Creación de una tabla mediante programación en un origen de datos ODBC.

En la siguiente información se describen los parámetros que deben pasarse a la función de API ODBC ::SQLConfigDataSource. Para usar ::SQLConfigDataSource, debe incluir el archivo de encabezado Odbcinst.h y usar la biblioteca de importación Odbcinst.lib. Además, Odbccp32.dll debe estar en la ruta de acceso en tiempo de ejecución (o Odbcinst.dll de 16 bits).

Puede crear un nombre de origen de datos ODBC mediante el administrador de ODBC o una utilidad similar. Sin embargo, a veces es conveniente crear un nombre de origen de datos directamente desde la aplicación para tener acceso sin necesidad de que el usuario ejecute una utilidad aparte.

El administrador de ODBC (que suele estar instalado en el Panel de control) crea un origen de datos nuevo colocando entradas en el Registro de Windows (o en el archivo Odbc.ini, si hablamos de 16 bits). El administrador de controladores ODBC consulta este archivo para obtener la información necesaria sobre el origen de datos. Es importante saber qué información debe colocarse en el registro, ya que es necesario proporcionarla con la llamada a ::SQLConfigDataSource.

Aunque esta información se puede escribir directamente en el Registro sin usar ::SQLConfigDataSource, cualquier aplicación que lo haga depende de la técnica que el administrador de controladores use actualmente para mantener sus datos. Si una revisión posterior del administrador de controladores ODBC implementa el mantenimiento de registros sobre los orígenes de datos de otra manera, cualquier aplicación que use esta técnica se interrumpirá. Por lo general, se recomienda usar una función de API cuando se disponga de una. Por ejemplo, el código se puede migrar de 16 bits a 32 bits si se usa la función ::SQLConfigDataSource, ya que esta función escribe correctamente en el archivo Odbc.ini o en el Registro.

Parámetros de SQLConfigDataSource

Aquí se explican los parámetros de la función ::SQLConfigDataSource. Gran parte de la información se toma de la Referencia del programador de la API ODBC proporcionada en la versión 1.5 de Visual C++ y versiones posteriores.

Prototipo de función

BOOL SQLConfigDataSource(HWND hwndParent,UINT fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes);

Comentarios

Parámetros y uso

hwndParent
Ventana especificada como propietario de los cuadros de diálogo que el administrador de controladores ODBC o el controlador ODBC específico crea para obtener más información del usuario sobre el nuevo origen de datos. Si el parámetro lpszAttributes no proporciona información suficiente, aparecerá un cuadro de diálogo. El parámetro hwndParent podría ser NULL.

lpszDriver
Descripción del controlador. Este es el nombre que aparece a los usuarios en lugar del nombre del controlador físico (DLL).

lpszAttributes
Lista de atributos con el formato "keyname=value". Estas cadenas están separadas por terminadores NULL, con dos terminadores NULL consecutivos al final de la lista. Estos atributos son principalmente entradas específicas del controlador predeterminadas, que se incluyen en el Registro en relación con el nuevo origen de datos. Una clave importante que no se menciona en la referencia de la API ODBC respecto a esta función es "DSN" ("nombre del origen de datos"), que especifica el nombre del nuevo origen de datos. El resto de las entradas son específicas del controlador del nuevo origen de datos. A menudo, no es necesario proporcionar todas las entradas, porque el controlador puede solicitar los nuevos valores al usuario en cuadros de diálogo (establezca hwndParent en NULL para que esto sea así). Puede que quiera proporcionar explícitamente valores predeterminados para no pedirlos al usuario.

Para determinar la descripción de un controlador para el parámetro lpszDriver mediante el administrador de ODBC

  1. Ejecute el administrador de ODBC.

  2. Haga clic en Agregar.

Esto proporciona una lista de controladores instalados y sus descripciones. Use esta descripción como parámetro lpszDriver. Tenga en cuenta que se usa toda la descripción, como "Archivos de Excel (*.xls)", incluida la extensión de nombre de archivo y los paréntesis, si así figuran en la descripción.

Como alternativa, puede examinar el Registro (o, en el caso de 16 bits, el archivo Odbcinst.ini), que contiene una lista de todas las entradas y descripciones del controlador en la clave del Registro "Controladores ODBC" (o la sección [ODBC Drivers] en Odbcinst.ini).

Una forma de encontrar los nombres de clave y los valores del parámetro lpszAttributes es examinar el archivo Odbc.ini de un origen de datos ya configurado (quizás uno configurado por el administrador de ODBC).

Para encontrar los nombres de clave y los valores del parámetro lpszAttributes

  1. Ejecute el Editor del Registro de Windows (o, en el caso de 16 bits, abra el archivo Odbc.ini).

  2. Busque la información de los orígenes de datos ODBC con una de las siguientes opciones:

    • En 32 bits, busque la clave HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources en el panel izquierdo.

      En el panel derecho aparecen entradas con este formato: "pub: REG_SZ:<nombre del origen de datos>", donde <nombre del origen de datos> es un origen de datos que ya se ha configurado con las opciones deseadas para el controlador que quiere usar. Seleccione el origen de datos que quiera, por ejemplo, SQL Server. Los elementos que siguen a la cadena "pub:" son, por este orden, el nombre de clave y el valor que se van a usar en el parámetro lpszAttributes.

    • En 16 bits, busque la sección del archivo Odbc.ini marcada como [<data source name>].

      Las líneas siguientes a esta línea tienen el formato "keyname=value". Estas son justamente las entradas que se usarán en el parámetro lpszAttributes.

Conviene examinar también la documentación del controlador específico que va a usar. Encontrará información útil en la Ayuda en línea del controlador, a la que puede acceder ejecutando el administrador de ODBC. Estos archivos de la Ayuda se suelen estar en el directorio WINDOWS\SYSTEM en Windows NT, Windows 3.1 o Windows 95.

Para acceder a la Ayuda en línea del controlador ODBC

  1. Ejecute el administrador de ODBC.

  2. Haga clic en Agregar.

  3. Seleccione el nombre del controlador.

  4. Haga clic en OK.

Cuando el administrador de ODBC muestre la información para crear un origen de datos para ese controlador determinado, haga clic en Ayuda. Se abrirá el archivo de Ayuda de ese controlador concreto, que generalmente contiene información importante sobre cómo usarlo.

Consulte también

Origen de datos (ODBC)