Share via


Cómo asignar identificadores y conectarse a SQL Server (ODBC)

Para asignar los identificadores y conectarse a SQL Server

  1. Incluya los archivos de encabezado ODBC Sql.h, Sqlext.h, Sqltypes.h.

  2. Incluya el archivo de encabezado específico del controlador SQL Server, Odbcss.h.

  3. Llame a SQLAllocHandle con un HandleType de SQL_HANDLE_ENV para inicializar ODBC y asignar un identificador de entorno.

  4. Llame a SQLSetEnvAttr con Attribute establecido en SQL_ATTR_ODBC_VERSION y ValuePtr establecido en SQL_OV_ODBC3 para indicar que la aplicación utilizará llamadas a función en formato ODBC 3.x.

  5. Opcionalmente, llame a SQLSetEnvAttr para establecer otras opciones del entorno o llame a SQLGetEnvAttr para obtener las opciones del entorno.

  6. Llame a SQLAllocHandle con un HandleType de SQL_HANDLE_DBC para asignar un identificador de conexión.

  7. Opcionalmente, llame a SQLSetConnectAttr para establecer las opciones de conexión o llame a SQLGetConnectAttr para obtener las opciones de conexión.

  8. Llame a SQLConnect para utilizar un origen de datos existente para conectarse a SQL Server.

    O bien

    Llame a SQLDriverConnect para utilizar una cadena de conexión para conectarse a SQL Server.

    Una cadena de conexión SQL Server completa mínima tiene uno de dos formatos:

    DSN=dsn_name;Trusted_connection=yes;
    DRIVER={SQL Server Native Client 10.0};SERVER=server;Trusted_connection=yes;
    

    Si la cadena de conexión no se ha completado, SQLDriverConnect puede solicitar la información necesaria. El valor especificado para el parámetro DriverCompletion controla esto.

    O bien

    Llame varias veces a SQLBrowseConnect de un modo iterativo para generar la cadena de conexión y conectarse a SQL Server.

  9. Opcionalmente, llame a SQLGetInfo para obtener los atributos del controlador y el comportamiento del origen de datos SQL Server.

  10. Asigne y utilice las instrucciones.

  11. Llame a SQLDisconnect para desconectarse de SQL Server y ponga el identificador de conexión a disposición de una nueva conexión.

  12. Llame a SQLFreeHandle con un HandleType de SQL_HANDLE_DBC para liberar el identificador de conexión.

  13. Llame a SQLFreeHandle con un HandleType de SQL_HANDLE_ENV para liberar el identificador del entorno.

Nota de seguridadNota de seguridad

Siempre que sea posible, utilice la autenticación de Windows. Si la autenticación de Windows no está disponible, solicite a los usuarios que escriban sus credenciales en tiempo de ejecución. No guarde las credenciales en un archivo. Si tiene que conservar las credenciales, debería cifrarlas con la API de criptografía de Win32.

Ejemplo

En este ejemplo se muestra una llamada a SQLDriverConnect para conectarse a una instancia de SQL Server sin necesidad de un origen de datos ODBC existente. El paso de una cadena de conexión incompleta a SQLDriverConnect, hace que el controlador ODBC solicite al usuario que escriba la información que falta.

#define MAXBUFLEN   255

SQLHENV      henv = SQL_NULL_HENV;
SQLHDBC      hdbc1 = SQL_NULL_HDBC;
SQLHSTMT      hstmt1 = SQL_NULL_HSTMT;

SQLCHAR      ConnStrIn[MAXBUFLEN] =
         "DRIVER={SQL Server Native Client 10.0};SERVER=MyServer";

SQLCHAR      ConnStrOut[MAXBUFLEN];
SQLSMALLINT   cbConnStrOut = 0;

// Make connection without data source. Ask that driver 
// prompt if insufficient information. Driver returns
// SQL_ERROR and application prompts user
// for missing information. Window handle not needed for
// SQL_DRIVER_NOPROMPT.
retcode = SQLDriverConnect(hdbc1,      // Connection handle
                  NULL,         // Window handle
                  ConnStrIn,      // Input connect string
                  SQL_NTS,         // Null-terminated string
                  ConnStrOut,      // Address of output buffer
                  MAXBUFLEN,      // Size of output buffer
                  &cbConnStrOut,   // Address of output length
                  SQL_DRIVER_PROMPT);