共用方式為


資料來源:以程式設計方式設定 ODBC 資料來源

本主題說明如何以程式設計方式設定 Open Database Connectivity (ODBC) 數據源名稱。 這可讓您彈性地存取數據,而不需要強制用戶明確使用 ODBC 系統管理員或其他程式來指定數據源的名稱。

使用者通常會執行 ODBC 系統管理員,以建立數據源,如果相關聯的資料庫管理系統 (DBMS) 支援這項作業。

透過 ODBC 系統管理員建立Microsoft Access ODBC 數據源時,有兩個選項:您可以選取現有的.mdb檔案,也可以建立新的.mdb檔案。 沒有從 MFC ODBC 應用程式建立.mdb檔案的程式設計方式。 因此,如果您的應用程式需要將資料放入 Microsoft Access 數據源(.mdb檔案),您最可能想要有一個空的.mdb檔案,只要需要,就可以使用或複製它。

不過,許多 DBMS 允許以程式設計方式建立數據源。 某些數據源會維護資料庫的目錄規格。 也就是說,目錄是數據源,而數據源中的每個數據表都會儲存在個別的檔案中(在 dBASE 的情況下,每個數據表都是 .dbf 檔案)。 其他 ODBC 資料庫的驅動程式,例如 Microsoft Access 和 SQL Server,需要先滿足一些特定準則,才能建立數據源。 例如,使用 SQL Server ODBC 驅動程式時,您必須建立 SQL Server 計算機。

SQLConfigDataSource 範例

下列範例會 ::SQLConfigDataSource 使用 ODBC API 函式來建立名為 New Excel 數據源的新 Excel 數據來源:

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Excel Files (*.xls)",
                   "DSN=New Excel Data Source\0"
                   "Description=New Excel Data Source\0"
                   "FileType=Excel\0"
                   "DataDirectory=C:\\EXCELDIR\0"
                   "MaxScanRows=20\0");

請注意,數據源實際上是目錄 (C:\EXCELDIR):此目錄必須存在。 Excel 驅動程式會使用目錄作為其數據源和檔案作為個別數據表(每個.xls檔案一個數據表)。

如需建立數據表的詳細資訊,請參閱 數據源:以程序設計方式在 ODBC 數據源中建立數據表。

下列資訊討論需要傳遞至 ::SQLConfigDataSource ODBC API 函式的參數。 若要使用 ::SQLConfigDataSource,您必須包含 Odbcinst.h 頭檔,並使用 Odbcinst.lib 匯入連結庫。 此外,Odbccp32.dll必須在運行時間的路徑中(或16位Odbcinst.dll)。

您可以使用 ODBC 系統管理員或類似的公用程式來建立 ODBC 資料來源名稱。 不過,有時候最好直接從您的應用程式建立數據源名稱,以取得存取權,而不需要使用者執行個別的公用程式。

ODBC 系統管理員(通常安裝在 控制台 中),藉由將專案放在 Windows 登錄中來建立新的數據源(或 16 位的 Odbc.ini 檔案中)。 ODBC 驅動程式管理員會查詢此檔案,以取得數據源的必要資訊。 請務必知道登錄中需要放置哪些資訊,因為您需要提供對的呼叫 ::SQLConfigDataSource

雖然這項資訊可以直接寫入登錄而不使用 ::SQLConfigDataSource,但執行這項作業的任何應用程式都依賴驅動程式管理員用來維護其數據的目前技術。 如果 ODBC 驅動程式管理員的後續修訂實作以不同方式保留數據源的記錄,則使用這項技術的任何應用程式都會中斷。 通常建議在提供 API 函式時使用 API 函式。 例如,如果您使用 ::SQLConfigDataSource 函式,您的程式代碼會從16位移植到32位,因為函式會正確地寫入Odbc.ini檔案或登錄。

SQLConfigDataSource 參数

下列說明 函式的參數 ::SQLConfigDataSource 。 大部分資訊都是取自 Visual C++ 1.5 版和更新版本的 ODBC API 程式設計人員參考

函式原型

BOOL SQLConfigDataSource(HWND hwndParent,UINT fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes);

備註

參數和使用方式

hwndParent
指定為 ODBC 驅動程式管理員或特定 ODBC 驅動程式所建立之任何對話框的擁有者,以從使用者取得有關新數據源的其他資訊。 如果 lpszAttributes 參數未提供足夠的資訊,則會出現對話方塊。 hwndParent 參數可能是 NULL。

lpszDriver
驅動程式描述。 這是向用戶呈現的名稱,而不是實體驅動程式名稱(DLL)。

lpszAttributes
格式為 「keyname=value」 的屬性清單。 這些字串會以 Null 終止符分隔,在清單結尾有兩個連續的 Null 終止符。 這些屬性主要是預設驅動程式特定專案,會進入新數據源的登錄。 此函式的 ODBC API 參考中未提及的一個重要索引鍵是 “DSN” (“數據源名稱”),指定新數據源的名稱。 其餘專案是新數據源的驅動程序專屬。 通常不需要提供所有專案,因為驅動程式可以提示使用者輸入新值的對話框。 (將 hwndParent 設定為 NULL 以造成此狀況。您可能想要明確提供預設值,以免提示使用者。

使用 ODBC 系統管理員判斷 lpszDriver 參數驅動程式的描述

  1. 執行 ODBC 系統管理員。

  2. 按一下新增

這可讓您列出已安裝的驅動程式及其描述。 使用此描述作為 lpszDriver 參數。 請注意,如果您使用整個描述,例如“Excel 檔案(*.xls)”,包括擴展名和括弧,如果描述中有擴展名和括弧。

或者,您可以檢查登錄(或16位的檔案Odbcinst.ini),其中包含登錄機碼 「ODBC Drivers」 下的所有驅動程式專案和描述清單(或 Odbcinst.ini 中的 [ODBC 驅動程式] 區段)。

尋找 lpszAttributes 參數的索引鍵名稱和值的方法之一,就是檢查已設定數據源的Odbc.ini檔案(可能是 ODBC 系統管理員已設定的檔案)。

尋找 lpszAttributes 參數的索引鍵名稱和值

  1. 執行 Windows 登錄編輯器(或針對 16 位開啟Odbc.ini檔案)。

  2. 使用下列其中一項來尋找 ODBC 數據來源資訊:

    • 針對 32 位,尋找 金鑰HKEY_CURRENT_USER\Software\ODBC\ODBC。左窗格中的 INI\ODBC 數據源

      右窗格會列出表單的專案:「pub:REG_SZ:數據源名稱」,其中<數據源名稱>>是已針對您想要使用的驅動程式設定的數據源。< 選取您想要的數據源,例如 SQL Server。 字串 “pub:” 後面的專案依序是 lpszAttributes 參數中要使用的索引鍵名稱和值。

    • 針對 16 位,請在 [數據源名稱>] 標示<的Odbc.ini檔案中尋找 區段。

      這一行後面的行格式為 「keyname=value」。。 這些正是您在 lpszAttributes 參數中使用的專案。

您可能也想要檢查您要使用之特定驅動程式的檔案。 您可以在驅動程式的線上說明中找到有用的資訊,您可以執行 ODBC 系統管理員加以存取。 這些說明檔通常會放在 Windows NT、Windows 3.1 或 Windows 95 的 WINDOWS\SYSTEM 目錄中。

取得 ODBC 驅動程式的在線說明

  1. 執行 ODBC 系統管理員。

  2. 按一下新增

  3. 選取驅動程式名稱。

  4. 按一下 [確定]

當 ODBC 系統管理員顯示為該特定驅動程式建立新數據源的資訊時,請按兩下 [ 說明]。 這會開啟該特定驅動程式的說明檔案,該檔案通常包含有關驅動程式使用的重要資訊。

另請參閱

資料來源 (ODBC)