共用方式為


連接至資料來源 (ODBC)

配置環境與連接控制代碼,並設定任何連接屬性之後,應用程式會連接到資料來源或驅動程式。 您可以用來連接的函數有三種:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

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

SQLConnect

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

SQLConnect 假設資料來源名稱、使用者識別碼和密碼足以連接到資料來源,而且 ODBC 資料來源包含 ODBC 驅動程式建立連接所需的所有其他資訊。 不同于 SQLDriverConnectSQLBrowseConnectSQLConnect 不會使用連接字串。

SQLDriverConnect

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

  • 在連接階段指定驅動程式專屬的資訊。

  • 要求驅動程式提示使用者輸入連接資訊。

  • 不使用 ODBC 資料來源連接。

SQLDriverConnect連接字串包含一系列關鍵字/值組,指定 ODBC 驅動程式支援的所有連接資訊。 除了供驅動程式支援之所有連接資訊使用的驅動程式專屬關鍵字之外,每個驅動程式還支援標準 ODBC 關鍵字 (DSN、FILEDSN、DRIVER、UID、PWD 和 SAVEFILE)。 SQLDriverConnect 可用來在沒有資料來源的情況下連線。 例如,設計為對實例進行「無 DSN」連線的應用程式,SQL Server可以使用定義登入識別碼、密碼、網路程式庫、要連線的伺服器名稱,以及要使用的預設資料庫來呼叫SQLDriverConnect

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

  • 應用程式對話方塊

    您可以建立提示連線資訊的應用程式對話方塊,然後使用 Null 視窗控制碼和DriverCompletion設定為 SQL_DRIVER_NOPROMPT 呼叫SQLDriverConnect。 這些參數設定可防止 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)