Allocare handle e connettersi a SQL Server (ODBC)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Per allocare handle e connettersi a SQL Server

  1. Includere i file di intestazione ODBC Sql.h, Sqlext.h, Sqltypes.h.

  2. Includere il file di intestazione specifico del driver SQL Server, Odbcss.h.

  3. Chiamare SQLAllocHandle con handleType di SQL_HANDLE_ENV per inizializzare ODBC e allocare un handle di ambiente.

  4. Chiamare SQLSetEnvAttr con Attribute impostato su SQL_ATTR_ODBC_VERSION e ValuePtr impostato su SQL_OV_ODBC3 per indicare che l'applicazione userà chiamate di funzione in formato ODBC 3.x.

  5. Facoltativamente, chiamare SQLSetEnvAttr per impostare altre opzioni di ambiente o chiamare SQLGetEnvAttr per ottenere le opzioni di ambiente.

  6. Chiamare SQLAllocHandle con handleType di SQL_HANDLE_DBC per allocare un handle di connessione.

  7. Facoltativamente, chiamare SQLSetConnectAttr per impostare le opzioni di connessione o chiamare SQLGetConnectAttr per ottenere le opzioni di connessione.

  8. Chiamare SQLConnect per usare un'origine dati esistente per connettersi a SQL Server.

    Oppure

    Chiamare SQLDriverConnect per usare una stringa di connessione per connettersi a SQL Server.

    Una stringa di connessione completa minima SQL Server ha uno dei due formati seguenti:

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

    Se la stringa di connessione non è completa, SQLDriverConnect può richiedere le informazioni necessarie. Ciò è controllato dal valore specificato per il parametro DriverCompletion .

    - oppure -

    Chiamare SQLBrowseConnect più volte in modo iterativo per compilare la stringa di connessione e connettersi a SQL Server.

  9. Facoltativamente, chiamare SQLGetInfo per ottenere gli attributi e il comportamento del driver per l'origine dati SQL Server.

  10. Allocare e utilizzare le istruzioni.

  11. Chiamare SQLDisconnect per disconnettersi da SQL Server e rendere disponibile l'handle di connessione per una nuova connessione.

  12. Chiamare SQLFreeHandle con handleType di SQL_HANDLE_DBC per liberare l'handle di connessione.

  13. Chiamare SQLFreeHandle con handleType di SQL_HANDLE_ENV per liberare l'handle dell'ambiente.

Importante

Se possibile, usare l'autenticazione di Windows. Se non è disponibile, agli utenti verrà richiesto di immettere le credenziali in fase di esecuzione. Evitare di archiviare le credenziali in un file. Se è necessario rendere persistenti le credenziali, è consigliabile crittografarle usando l'API di crittografia Win32.

Esempio

In questo esempio viene illustrata una chiamata a SQLDriverConnect per connettersi a un'istanza di SQL Server senza richiedere un'origine dati ODBC esistente. Passando una stringa di connessione incompleta a SQLDriverConnect, il driver ODBC chiede all'utente di immettere le informazioni mancanti.

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