配置控制代碼並連接到 SQL Server (ODBC)

配置控制代碼並連接到 SQL Server

  1. 加入 ODBC 標頭檔 Sql.h、Sqlext.h、Sqltypes.h。

  2. 加入 SQL Server 驅動程式專屬的標頭檔 Odbcss.h。

  3. 利用 SQL_HANDLE_ENV 的 HandleType 呼叫 SQLAllocHandle 來初始化 ODBC 並配置環境控制代碼。

  4. 在將 Attribute 設定為 SQL_ATTR_ODBC_VERSION 並將 ValuePtr 設定為 SQL_OV_ODBC3 時,呼叫 SQLSetEnvAttr 表示應用程式將使用 ODBC 3.x 格式的函數呼叫。

  5. 或者,呼叫 SQLSetEnvAttr 來設定其他環境選項,或呼叫 SQLGetEnvAttr 來取得環境選項。

  6. 利用 SQL_HANDLE_DBC 的 HandleType 呼叫 SQLAllocHandle 來配置連接控制代碼。

  7. 或者,呼叫 SQLSetConnectAttr 來設定連接選項,或呼叫 SQLGetConnectAttr 來取得連接選項。

  8. 呼叫 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。

  9. 或者,呼叫 SQLGetInfo 來取得驅動程式屬性以及 SQL Server 資料來源的行為。

  10. 配置與使用陳述式。

  11. 呼叫 SQLDisconnect 來中斷與 SQL Server 的連接,並提供連接控制代碼給新的連接使用。

  12. 利用 SQL_HANDLE_DBC 的 HandleType 呼叫 SQLFreeHandle 來釋放連接控制代碼。

  13. 利用 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);