Allocare handle e connettersi a SQL Server (ODBC)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

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 oppure chiamare SQLGetEnvAttr per ottenere le opzioni di ambiente.

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

  7. Facoltativamente, chiamare SQLSetConnectAttr per impostare le opzioni di connessione oppure 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 .

    Il formato minimo di una stringa di connessione SQL Server completa può essere uno dei 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. Questo è 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 del driver e il comportamento per SQL Server l'origine dati.

  10. Allocare e utilizzare le istruzioni.

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

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

  13. Chiamare SQLFreeHandle con handleType di SQL_HANDLE_ENV per liberare l'handle di 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 richiede 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);