共用方式為


分配句柄並連接到 SQL Server (ODBC)

配置句柄並連線到 SQL Server

  1. 包含 ODBC 頭檔 Sql.h、Sqlext.h、Sqltypes.h。

  2. 包含 SQL Server 驅動程式特定的頭檔 Odbcss.h。

  3. 使用 HandleType SQL_HANDLE_ENV 的呼叫 SQLAllocHandle,以初始化 ODBC 並配置環境句柄。

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

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

  6. 使用 HandleType SQL_HANDLE_DBC 的呼叫 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. 使用 HandleType SQL_HANDLE_DBC呼叫 SQLFreeHandle 以釋放連線句柄。

  13. 使用 HandleType SQL_HANDLE_ENV的呼叫SQLFreeHandle,以釋放環境句柄。

這很重要

盡可能使用 Windows 驗證。 如果 Windows 驗證無法使用,請提示使用者在運行時間輸入其認證。 避免將認證儲存在檔案中。 如果您必須保存認證,您應該使用 Win32 加密 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);