配置控制代碼並連接到 SQL Server (ODBC)
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)
配置控制代碼並連接到 SQL Server
加入 ODBC 標頭檔 Sql.h、Sqlext.h、Sqltypes.h。
包含SQL Server驅動程式特定標頭檔 Odbcss.h。
使用SQL_HANDLE_ENV HandleType呼叫SQLAllocHandle,以初始化 ODBC 並配置環境控制碼。
呼叫 SQLSetEnvAttr並將 Attribute 設定為 SQL_ATTR_ODBC_VERSION 且 ValuePtr 設定為 SQL_OV_ODBC3,表示應用程式將使用 ODBC 3.x 格式函式呼叫。
選擇性地呼叫 SQLSetEnvAttr 以設定其他環境選項,或呼叫 SQLGetEnvAttr 以取得環境選項。
使用handleType SQL_HANDLE_DBC 呼叫SQLAllocHandle以配置連接控制碼。
選擇性地呼叫 SQLSetConnectAttr 以設定連線選項,或呼叫 SQLGetConnectAttr 以取得連線選項。
呼叫 SQLConnect 以使用現有的資料來源來連線到SQL Server。
Or
呼叫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的連線,並讓連接控制碼可供新的連線使用。
使用handleType SQL_HANDLE_DBC 呼叫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);
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應