Partager via


Allouer des handles et se connecter à SQL Server (ODBC)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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 l’attribut 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 des 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.

    Or

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

    Un chaîne de connexion SQL Server complet minimum comporte 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 le chaîne de connexion n’est pas terminé, SQLDriverConnect peut demander les informations requises. 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 le 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 à une instance de SQL Server sans nécessiter de source de données ODBC existante. En transmettant une chaîne de connexion incomplète à SQLDriverConnect, le pilote ODBC invite l’utilisateur à 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);