Compartir a través de


Conexión a un origen de datos (ODBC)

Después de asignar el entorno y la conexión controla y establece los atributos de conexión, la aplicación se conecta al origen de datos o al controlador. Hay tres funciones que puede usar para conectarse:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

Para obtener más información sobre cómo realizar conexiones a un origen de datos, incluidas las distintas opciones de cadena de conexión disponibles, vea Uso de palabras clave de cadena de conexión con SQL Server Native Client.

SQLConnect

SQLConnect es la función de conexión más sencilla. Acepta tres parámetros: un nombre de origen de datos, un identificador de usuario y una contraseña. Use SQLConnect cuando estos tres parámetros contengan toda la información necesaria para conectarse a la base de datos. Para ello, cree una lista de orígenes de datos mediante SQLDataSources; solicitar al usuario un origen de datos, un identificador de usuario y una contraseña; y, a continuación, llame a SQLConnect.

SQLConnect supone que un nombre de origen de datos, un identificador de usuario y una contraseña son suficientes para conectarse a un origen de datos y que el origen de datos ODBC contiene toda la información que el controlador ODBC necesita para establecer la conexión. A diferencia de SQLDriverConnect y SQLBrowseConnect, SQLConnect no usa una cadena de conexión.

SQLDriverConnect

SQLDriverConnect se usa cuando se requiere más información que el nombre del origen de datos, el identificador de usuario y la contraseña. Uno de los parámetros de SQLDriverConnect es una cadena de conexión que contiene información específica del controlador. Puede usar SQLDriverConnect en lugar de SQLConnect por los siguientes motivos:

  • Para especificar información específica del controlador en el momento de la conexión.

  • Para solicitar que el controlador solicite al usuario información de conexión.

  • Para conectarse sin usar un origen de datos ODBC.

La cadena de conexión SQLDriverConnect contiene una serie de pares de palabra clave-valor que especifican toda la información de conexión compatible con un controlador ODBC. Cada controlador admite las palabras clave ODBC estándar (DSN, FILEDSN, DRIVER, UID, PWD y SAVEFILE) además de las palabras clave específicas del controlador para toda la información de conexión compatible con el controlador. SQLDriverConnect se puede usar para conectarse sin un origen de datos. Por ejemplo, una aplicación diseñada para establecer una conexión "sin DSN" a una instancia de SQL Server puede llamar a SQLDriverConnect con una cadena de conexión que defina el identificador de inicio de sesión, la contraseña, la biblioteca de red, el nombre del servidor para conectarse y la base de datos predeterminada que se va a usar.

Al usar SQLDriverConnect, hay dos opciones para solicitar al usuario información de conexión necesaria:

  • Cuadro de diálogo Aplicación

    Puede crear un cuadro de diálogo de aplicación que solicite información de conexión y, a continuación, llame a SQLDriverConnect con un identificador de ventana NULL y DriverCompletion establecido en SQL_DRIVER_NOPROMPT. Esta configuración de parámetro impide que el controlador ODBC abra su propio cuadro de diálogo. Este método se usa cuando es importante controlar la interfaz de usuario de la aplicación.

  • Cuadro de diálogo Controlador

    Puede codificar la aplicación para pasar un identificador de ventana válido a SQLDriverConnect y establecer el parámetro DriverCompletion en SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT o SQL_DRIVER_COMPLETE_REQUIRED. A continuación, el controlador genera un cuadro de diálogo para solicitar al usuario información de conexión. Este método simplifica el código de la aplicación.

SQLBrowseConnect

SQLBrowseConnect, como SQLDriverConnect, usa una cadena de conexión. Sin embargo, mediante SQLBrowseConnect, una aplicación puede construir una cadena de conexión completa de forma iterativa con el origen de datos en tiempo de ejecución. Esto permite que la aplicación haga dos cosas:

  • Cree sus propios cuadros de diálogo para solicitar esta información, conservando así el control sobre su interfaz de usuario.

  • Examine el sistema para los orígenes de datos que puede usar un controlador determinado, posiblemente en varios pasos.

    Por ejemplo, el usuario puede examinar primero la red de servidores y, después de elegir un servidor, examine el servidor para las bases de datos accesibles por el controlador.

Cuando SQLBrowseConnect completa una conexión correcta, devuelve una cadena de conexión que se puede usar en llamadas posteriores a SQLDriverConnect.

El controlador ODBC de SQL Server Native Client siempre devuelve SQL_SUCCESS_WITH_INFO en sqlConnect, SQLDriverConnect o SQLBrowseConnect. Cuando una aplicación ODBC llama a SQLGetDiagRec después de obtener SQL_SUCCESS_WITH_INFO, puede recibir los siguientes mensajes:

5701
Indica que SQL Server coloca el contexto del usuario en la base de datos predeterminada definida en el origen de datos o en la base de datos predeterminada definida para el identificador de inicio de sesión usado en la conexión si el origen de datos no tenía una base de datos predeterminada.

5703
Indica el idioma que se usa en el servidor.

En el ejemplo siguiente se muestra el mensaje devuelto en una conexión correcta por el administrador del sistema:

szSqlState = "01000", *pfNativeError = 5701,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed database context to 'pubs'."  
szSqlState = "01000", *pfNativeError = 5703,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed language setting to 'us_english'."  

Puede omitir los mensajes 5701 y 5703; solo son informativos. Sin embargo, no debe omitir un código de devolución de SQL_SUCCESS_WITH_INFO porque se pueden devolver mensajes distintos de 5701 o 5703. Por ejemplo, si un controlador se conecta a un servidor que ejecuta una instancia de SQL Server con procedimientos almacenados de catálogo obsoletos, uno de los errores devueltos a través de SQLGetDiagRec después de un SQL_SUCCESS_WITH_INFO es:

SqlState:   01000  
pfNative:   0  
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC  
            catalog stored procedures installed on server  
            my65server are version 06.50.0193; version 07.00.0205  
            or later is required to ensure proper operation.  
            Please contact your system administrator."  

La función de control de errores de una aplicación para las conexiones de SQL Server debe llamar a SQLGetDiagRec hasta que devuelva SQL_NO_DATA. A continuación, debe actuar en cualquier mensaje distinto de los que tenga un código pfNative de 5701 o 5703.

Véase también

Comunicar con SQL Server (ODBC)