Procedura: Allocazione di handle e connessione a SQL Server (ODBC)
Per allocare handle e connettersi a SQL Server
Includere i file di intestazione ODBC Sql.h, Sqlext.h, Sqltypes.h.
Includere il file di intestazione specifico del driver SQL Server, Odbcss.h.
Chiamare SQLAllocHandle con HandleType impostato su SQL_HANDLE_ENV per inizializzare ODBC e allocare un handle di ambiente.
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.
È inoltre possibile chiamare SQLSetEnvAttr per impostare altre opzioni di ambiente oppure chiamare SQLGetEnvAttr per ottenere le opzioni di ambiente.
Chiamare SQLAllocHandle con HandleType impostato su SQL_HANDLE_DBC per allocare un handle di connessione.
È inoltre possibile chiamare SQLSetConnectAttr per impostare le opzioni di connessione oppure chiamare SQLGetConnectAttr per ottenere le opzioni di connessione.
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.
È inoltre possibile chiamare SQLGetInfo per ottenere gli attributi del driver e per conoscere il comportamento per l'origine dati SQL Server.
Allocare e utilizzare le istruzioni.
Chiamare SQLDisconnect per disconnettersi da SQL Server e rendere disponibile l'handle di connessione per una nuova connessione.
Chiamare SQLFreeHandle con HandleType impostato su SQL_HANDLE_DBC per liberare l'handle di connessione.
Chiamare SQLFreeHandle con HandleType impostato su SQL_HANDLE_ENV per liberare l'handle di ambiente.
Nota 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);