共用方式為


連線到資料來源 (ODBC)

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

配置環境和連線處理並設定任何連接屬性之後,應用程式會連線到數據源或驅動程式。 有三個函式可用來連線:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

如需建立數據源連線的詳細資訊,包括可用的各種 連接字串 選項,請參閱搭配 SQL Server Native Client 使用連接字串關鍵詞。

SQLConnect

SQLConnect 是最簡單的連線函式。 它接受三個參數:數據源名稱、用戶標識碼和密碼。 當這三個參數包含連線到資料庫所需的所有資訊時,請使用 SQLConnect 。 若要這樣做,請使用 SQLDataSources 建置數據源清單;提示使用者輸入數據源、使用者標識碼和密碼,然後呼叫 SQLConnect

SQLConnect 假設數據來源名稱、使用者標識碼和密碼足以連線到數據源,而且 ODBC 數據源包含 ODBC 驅動程式必須建立連線的所有其他資訊。 不同於 SQLDriverConnect 和 SQLBrowseConnect,SQLConnect 不會使用 連接字串。

SQLDriverConnect

當需要比數據源名稱、使用者標識碼和密碼更多的資訊時,就會使用SQLDriverConnect 。 SQLDriverConnect 的其中一個參數是包含驅動程式特定資訊的 連接字串。 基於下列原因,您可以使用 SQLDriverConnect 而非 SQLConnect

  • 若要在連接時間指定驅動程式特定資訊。

  • 要求驅動程式提示使用者提供連線資訊。

  • 在不使用 ODBC 數據源的情況下連線。

SQLDriverConnect 連接字串 包含一系列關鍵詞/值組,指定 ODBC 驅動程式支援的所有連接資訊。 除了驅動程序支援的所有連線資訊,每個驅動程式都支持標準 ODBC 關鍵詞(DSN、FILEDSN、DRIVER、UID、PWD、PWD 和 SAVEFILE)。 SQLDriverConnect 可用來連接沒有數據源。 例如,設計為建立 SQL Server 實例的「DSN 減少」連線的應用程式,可以使用定義登入標識符、密碼、網路連結庫、伺服器名稱以連線的 連接字串 呼叫 SQLDriverConnect,以及要使用的預設資料庫。

使用 SQLDriverConnect 時,有兩個選項可提示使用者輸入任何所需的連線資訊:

  • 應用程式對話框

    您可以建立應用程式對話框來提示連線資訊,然後呼叫 SQLDriverConnect ,並將 NULL 視窗句柄和 DriverCompletion 設定為 SQL_DRIVER_NOPROMPT。 這些參數設定可防止 ODBC 驅動程式開啟自己的對話方塊。 當控制應用程式的使用者介面很重要時,會使用這個方法。

  • 驅動程式對話框

    您可以撰寫應用程式程序代碼,將有效的視窗句柄傳遞至 SQLDriverConnect,並將 DriverCompletion 參數設定SQL_DRIVER_COMPLETE、SQL_DRIVER_PROMPT或SQL_DRIVER_COMPLETE_REQUIRED。 驅動程式接著會產生對話框,以提示使用者輸入連線資訊。 此方法可簡化應用程式程序代碼。

SQLBrowseConnect

SQLBrowseConnect 就像 SQLDriverConnect,會使用連接字串。 不過,藉由使用 SQLBrowseConnect,應用程式可以在運行時間反覆建構完整的 連接字串 數據源。 這可以讓應用程式執行兩個動作:

  • 建置自己的對話框來提示此資訊,藉此保留對其使用者介面的控制。

  • 瀏覽系統中,特定驅動程式可使用的資料來源 (可能是透過數個步驟)。

    例如,使用者介面可能會先瀏覽網路中的伺服器,然後在選擇伺服器之後,瀏覽伺服器中可由驅動程式存取的資料庫。

SQLBrowseConnect 完成連線時,它會傳回可在後續 SQLDriverConnect 呼叫時使用的 連接字串。

SQL Server Native Client ODBC 驅動程式一律會在成功的 SQLConnect、SQLDriverConnectSQLBrowseConnect 上傳回SQL_SUCCESS_WITH_INFO。 當 ODBC 應用程式在取得SQL_SUCCESS_WITH_INFO之後呼叫 SQLGetDiagRec 時,可以接收下列訊息:

5701
指出如果數據源沒有預設資料庫,SQL Server 會將使用者的內容放入數據源中定義的預設資料庫,或放入針對連接中使用的登入標識碼所定義的預設資料庫。

5703
指出伺服器上所使用的語言。

下列範例顯示系統管理員成功連線時傳回的訊息:

szSqlState = "01000", *pfNativeError = 5701,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed database context to 'pubs'."  
szSqlState = "01000", *pfNativeError = 5703,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed language setting to 'us_english'."  

您可以忽略訊息 5701 和 5703;它們只是資訊。 不過,您不應該忽略SQL_SUCCESS_WITH_INFO傳回碼,因為可能會傳回 5701 或 5703 以外的訊息。 例如,如果驅動程式使用過期的目錄預存程式連接到執行 SQL Server 實例的伺服器,則SQL_SUCCESS_WITH_INFO之後透過 SQLGetDiagRec 傳回的錯誤之一為:

SqlState:   01000  
pfNative:   0  
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC  
            catalog stored procedures installed on server  
            my65server are version 06.50.0193; version 07.00.0205  
            or later is required to ensure proper operation.  
            Please contact your system administrator."  

SQL Server 連線之應用程式的錯誤處理函式應該呼叫 SQLGetDiagRec ,直到傳回SQL_NO_DATA為止。 然後,它應該會針對具有5701或5703之 pfNative 程式代碼以外的任何訊息採取行動。

另請參閱

與 SQL Server 進行通訊 (ODBC)