Share via


Procédure : allouer des handles et se connecter à SQL Server (ODBC)

Pour allouer les handles et se connecter à SQL Server

  1. Incluez les fichiers d'en-tête ODBC Sql.h, Sqlext.h, Sqltypes.h.

  2. Incluez le fichier d'en-tête spécifique au pilote SQL Server, Odbcss.h.

  3. Appelez SQLAllocHandle avec un HandleType de SQL_HANDLE_ENV pour initialiser ODBC et allouer un handle d'environnement.

  4. Appelez SQLSetEnvAttr avec Attribute défini avec la valeur SQL_ATTR_ODBC_VERSION et ValuePtr défini avec la valeur SQL_OV_ODBC3 pour indiquer que l'application utilise les appels de fonction au format 3.x ODBC.

  5. Le cas échéant, appelez SQLSetEnvAttr pour définir d'autres options d'environnement, ou appelez pour obtenir les options d'environnement.

  6. Appelez SQLAllocHandle avec un HandleType de SQL_HANDLE_DBC pour allouer un handle de connexion.

  7. Le cas échéant, appelez SQLSetConnectAttr pour définir les options de connexion ou appelez SQLGetConnectAttr pour obtenir les options de connexion.

  8. Appelez SQLConnect pour utiliser une source de données existante et se connecter à SQL Server.

    Ou

    Appelez SQLDriverConnect pour utiliser une chaîne de connexion et se connecter à SQL Server.

    Une chaîne de connexion SQL Server minimale complète revêt l'une des deux formes :

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

    Si la chaîne de connexion n'est pas complète, SQLDriverConnect peut demander les informations nécessaires. Cela est contrôlé par la valeur spécifiée pour le paramètre DriverCompletion.

    - ou -

    Appelez plusieurs fois SQLBrowseConnect de façon itérative pour générer la chaîne de connexion et se connecter à SQL Server.

  9. Le cas échéant, appelez SQLGetInfo pour obtenir le comportement et les attributs du pilote pour la source de données SQL Server.

  10. Allouez et utilisez les instructions.

  11. Appelez SQLDisconnect pour déconnecter de SQL Server et rendez le handle de connexion disponible pour une nouvelle connexion.

  12. Appelez SQLFreeHandle avec un HandleType de SQL_HANDLE_DBC pour libérer le handle de connexion.

  13. Appelez SQLFreeHandle avec un HandleType de SQL_HANDLE_ENV pour libérer le handle d'environnement.

Remarque relative à la sécuritéRemarque relative à la sécurité

Si possible, utilisez l'authentification Windows. Si l'authentification Windows n'est pas disponible, invitez les utilisateurs à entrer leurs informations d'identification au moment de l'exécution. Évitez de stocker ces informations dans un fichier. Si vous devez rendre les informations d'identification persistantes, chiffrez-les avec l'API de chiffrement Win32.

Exemple

Cet exemple illustre un appel de SQLDriverConnect pour se connecter à une instance de SQL Server sans requérir une source de données ODBC existante. En passant une chaîne de connexion incomplète à SQLDriverConnect, le pilote ODBC est contraint de demander à l'utilisateur d'entrer les informations manquantes.

#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);