Partager via


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 SQL Server fichier d’en-tête spécifique au pilote, 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 sur SQL_ATTR_ODBC_VERSION et ValuePtr défini sur SQL_OV_ODBC3 pour indiquer que l’application utilisera des appels de fonction au format ODBC 3.x.

  5. Si vous le souhaitez, appelez SQLSetEnvAttr pour définir d’autres options d’environnement, ou appelez SQLGetEnvAttr pour obtenir les options d’environnement.

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

  7. Si vous le souhaitez, 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 pour vous connecter à SQL Server.

    ou

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

    Une chaîne de connexion SQL Server complète au minimum se présente sous l’une des deux formes suivantes :

    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. Ceci est contrôlé par la valeur spécifiée pour le paramètre DriverCompletion .

    - ou -

    Appelez SQLBrowseConnect plusieurs fois de manière itérative pour générer la chaîne de connexion et vous connecter à SQL Server.

  9. Si vous le souhaitez, appelez SQLGetInfo pour obtenir les attributs et le comportement du pilote pour la source de données SQL Server.

  10. Allouez et utilisez les instructions.

  11. Appelez SQLDisconnect pour vous déconnecter de SQL Server et rendre 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.

Important

Lorsque c'est 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 montre un appel à SQLDriverConnect pour se connecter à un instance de SQL Server sans nécessiter 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);