選擇資料來源或驅動程式

應用程式所使用的資料來源或驅動程式有時會在應用程式進行硬式編碼。 例如,MIS 部門所撰寫的自訂應用程式,將資料從一個資料來源傳輸到另一個資料來源時,會包含這些資料來源的名稱 - 應用程式無法與任何其他資料來源一起使用。 另一個範例是垂直應用程式,例如用於順序輸入的應用程式。 這類應用程式始終使用相同的資料來源,該資料來源具有應用程式已知的預先定義架構。

其他應用程式會在執行時選取資料來源或驅動程式。 這些通常是執行臨機操作查詢的泛型應用程式,例如使用 ODBC 匯入資料的試算表。 這類應用程式通常會列出可用的資料來源或驅動程式,讓使用者選擇其想要使用的應用程式。 泛型應用程式是否列出資料來源、驅動程式或兩者都列,經常取決於應用程式使用 DBMS 型或檔案型驅動程式。

DBMS 為基礎的驅動程式通常需要一組複雜的連線資訊,例如網路位址、網路通訊協定、資料庫名稱等等。 資料來源的目的是要隱藏所有此資訊。 因此,資料來源範例適合搭配 DBMS 型驅動程式使用。 應用程式可以透過兩種方式之一,向使用者顯示資料來源清單。 其可以使用 DSN (資料來源名稱) 呼叫 SQLDriverConnect 關鍵字,且沒有相關聯的值;驅動程式管理員會顯示資料來源名稱的清單。 如果應用程式想要控制清單的外觀,其會呼叫 SQLDataSources 來擷取可用資料來源的清單,並建構自己的對話方塊。 此函式是由驅動程式管理員實作,而且可以在載入任何驅動程式之前進行呼叫。 應用程式接著會呼叫連線函式,傳遞所選資料來源的名稱。

如果未指定資料來源,則會使用系統資訊的預設資料來源。 (如需詳細資訊,請參閱預設 Subkey。) 如果找不到使用 ServerName 引數呼叫的 SQLConnect、為 Null 指標或為「DEFAULT」,驅動程式管理員會連線到預設資料來源。 如果用於呼叫至 SQLDriverConnectSQLBrowseConnect 的連接字串包含設定為「DEFAULT」 的 DSN 關鍵字,或找不到指定的資料來源,也會使用預設資料來源。 此外,如果用於呼叫 SQLDriverConnect 連接字串不包含 DSN 關鍵字,則會使用預設資料來源。

使用檔案型驅動程式時,可以使用檔案範例。 關於儲存在本機電腦的資料,使用者通常知道其資料位於特定檔案,例如 Employee.dbf。 這類使用者更容易選取其知道的檔案,而不是選取未知的資料來源。 若要實作這一點,應用程式會先呼叫 SQLDrivers。 此函式是由驅動程式管理員實作,而且可以在載入任何驅動程式之前進行呼叫。 SQLDrivers 會傳回可用的驅動程式清單;也會傳回 FileUsageFileExtns 關鍵字的值。 FileUsage 關鍵字說明檔案型驅動程式會將檔案視為資料表 (如 Xbase) 或是資料庫 (如 Microsoft Access)。 FileExtns關鍵字會列出驅動程式可辨識的副檔名,例如 Xbase 驅動程式的 .dbf。 使用此資訊,應用程式會建構對話方塊,讓使用者能選擇檔案。 根據所選檔案的延伸模組,應用程式接著會使用 DRIVER 關鍵字呼叫 SQLDriverConnect 連線到驅動程式。

無法阻止應用程式搭配檔案型驅動程式使用資料來源,或使用 DRIVER 關鍵字呼叫 SQLDriverConnect 連線到 DBMS 型驅動程式。 以下為 DBMS 型驅動程式 DRIVER 關鍵字的數個常見用法:

  • 未建立資料來源。 例如,自訂應用程式可能會使用特定的驅動程式與資料庫。 如果應用程式的驅動程式名稱與連線至資料庫所需的所有資訊為硬式編碼,使用者就不需要在其電腦建立資料來源,即可執行應用程式。 其要做的只是安裝應用程式與驅動程式。

    這個方法的缺點是,如果連接資訊變更,則必須重新編譯並重新發佈應用程式。 如果應用程式的資料來源名稱為硬式編碼,而不是完整的連線資訊,則每個使用者只能變更資料來源的資訊。

  • 一次存取特定的DBMS。 例如,呼叫 ODBC 函式來擷取資料的試算表可能包含 DRIVER 關鍵字以識別特定驅動程式。 因為驅動程式名稱對有該驅動程式的任何使用者具有意義,所以試算表可以在這些使用者之間傳遞。 如果試算表包含資料來源名稱,每個使用者必須建立相同的資料來源,才能使用試算表。

  • 瀏覽系統以取得特定驅動程式可存取的所有資料庫。 如需詳細資訊,請參閱本節後面的 使用 SQLBrowseConnect 連線