Condividi tramite


Procedura: Allocazione di handle e connessione a SQL Server (ODBC)

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 impostato su 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 utilizzerà chiamate a funzioni ODBC in formato 3.x.

  5. È inoltre possibile chiamare SQLSetEnvAttr per impostare altre opzioni di ambiente oppure chiamare SQLGetEnvAttr per ottenere le opzioni di ambiente.

  6. Chiamare SQLAllocHandle con HandleType impostato su SQL_HANDLE_DBC per allocare un handle di connessione.

  7. È inoltre possibile chiamare SQLSetConnectAttr per impostare le opzioni di connessione oppure chiamare SQLGetConnectAttr per ottenere le opzioni di connessione.

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

    Oppure

    Chiamare SQLDriverConnectper utilizzare 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. Questa funzionalità è controllata dal valore specificato nel parametro DriverCompletion.

    -oppure-

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

  9. È inoltre possibile chiamare SQLGetInfo per ottenere gli attributi del driver e per conoscere il comportamento 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 impostato su SQL_HANDLE_DBC per liberare l'handle di connessione.

  13. Chiamare SQLFreeHandle con HandleType impostato su SQL_HANDLE_ENV per liberare l'handle di ambiente.

Nota sulla sicurezzaNota sulla sicurezza

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

Esempio

In questo esempio viene mostrata 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, fa in modo che il driver ODBC richieda 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);