配置控制代碼並連接到 SQL Server (ODBC)
配置控制代碼並連接到 SQL Server
加入 ODBC 標頭檔 Sql.h、Sqlext.h、Sqltypes.h。
加入 SQL Server 驅動程式專屬的標頭檔 Odbcss.h。
利用 SQL_HANDLE_ENV 的 HandleType 呼叫 SQLAllocHandle 來初始化 ODBC 並配置環境控制代碼。
在將 Attribute 設定為 SQL_ATTR_ODBC_VERSION 並將 ValuePtr 設定為 SQL_OV_ODBC3 時,呼叫 SQLSetEnvAttr 表示應用程式將使用 ODBC 3.x 格式的函數呼叫。
或者,呼叫 SQLSetEnvAttr 來設定其他環境選項,或呼叫 SQLGetEnvAttr 來取得環境選項。
利用 SQL_HANDLE_DBC 的 HandleType 呼叫 SQLAllocHandle 來配置連接控制代碼。
或者,呼叫 SQLSetConnectAttr 來設定連接選項,或呼叫 SQLGetConnectAttr 來取得連接選項。
呼叫 SQLConnect 來使用現有的資料來源連接至 SQL Server。
或者
呼叫 SQLDriverConnect 來使用連接字串連接至 SQL Server。
完整的 SQL Server 連接字串至少擁有下列其中一種形式:
DSN=dsn_name;Trusted_connection=yes; DRIVER={SQL Server Native Client 10.0};SERVER=server;Trusted_connection=yes;
如果連接字串不完整,SQLDriverConnect 可以提示所需的資訊。 這是由針對 DriverCompletion 參數所指定的值控制。
-或-
反覆呼叫 SQLBrowseConnect 多次來建立連接字串,並連接至 SQL Server。
或者,呼叫 SQLGetInfo 來取得驅動程式屬性以及 SQL Server 資料來源的行為。
配置與使用陳述式。
呼叫 SQLDisconnect 來中斷與 SQL Server 的連接,並提供連接控制代碼給新的連接使用。
利用 SQL_HANDLE_DBC 的 HandleType 呼叫 SQLFreeHandle 來釋放連接控制代碼。
利用 SQL_HANDLE_ENV 的 HandleType 呼叫 SQLFreeHandle 來釋放環境控制代碼。
安全性注意事項 |
---|
盡可能使用 Windows 驗證。 如果無法使用 Windows 驗證,請提示使用者輸入執行階段的認證。 請避免將認證儲存在檔案中。 如果您必須保存認證,則應該用 Win32 crypto API 加密這些認證。 |
範例
此範例顯示呼叫 SQLDriverConnect 來連接至 SQL Server 執行個體,而不需要現有的 ODBC 資料來源。 將不完整的連接字串傳遞到 SQLDriverConnect 時,會使 ODBC 驅動程式提示使用者輸入遺漏的資訊。
#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);