您的位置:首页 > 数据库

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

2005-03-07 15:18 381 查看
本份文件將說明如何以程式設計方式設定開放式資料庫連接 (ODBC) 資料來源名稱。這個功能將提供您無須強制使用者明確使用ODBC 管理員 (ODBC 管理員) 或其他程式以指定資料來源名稱,就可存取資料的彈性。
一般說來,使用者會在相關的資料庫管理系統 (DBMS) 支援這個作業情況下,執行 ODBC 管理員程式來建立一個資料來源。
您在透過 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 data source」的新 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 標頭檔 (Header File),並使用 ODBCINST.LIB匯入程式庫。在 Run Time,ODBCCP32.DLL (或 16 位元的 ODBCINST.DLL) 也必須在路徑中。
您可以使用 ODBC 管理員程式或類似公用程式,建立一個 ODBC 資料來源名稱。但是有時為了取得存取權限,您最好直接從應用程式建立一個資料來源,而不需讓使用者執行一個單獨的公用程式。
ODBC 管理員 (通常安裝在「控制台」) 可在 Windows 登錄 (或是針對 16 位元,就是在 ODBC.INI 檔案) 放置項目以建立新的資料來源。ODBC 驅動程式管理員會查詢這個檔案來取得資料來源的必要資訊。知道登錄內需放置何種資訊是非常重要的,因為您需要在對 ::SQLConfigDataSource 呼叫時提供這份資訊。
儘管這份資訊可以不經 ::SQLConfigDataSource 就直接寫入登錄,但任何如此處理的應用程式仍需使用目前驅動程式管理員用以維持其資料的技術。如果有一個更新的 ODBC 驅動程式管理員的修定版本,使用不同的方式來實作一個保留資料來源的資料錄,則任何使用這項技術的應用程式就會中斷。如果有提供較新版本,通常會建議使用一個 API 函式的做法。例如,若您使用 ::SQLConfigDataSource 函式,則在該函式正確地撰寫至 ODBC.INI 檔案或是登錄時,您的程式碼就可以從 16 位元移植成 32 位元程式碼。

SQLConfigDataSource 參數

下面將說明 ::SQLConfigDataSource 函式的參數。如需詳細資訊,請參閱 1.5 版和更新版本的 Visual C++ 所提供的 ODBC API《程式設計人員參考手冊》。

函式原型

BOOL SQLConfigDataSource(HWND ,UINT , LPCSTR , LPCSTR );

參數和用法

hwndParent 此視窗會被指定成任何由 ODBC 驅動程式管理員或特定 ODBC 驅動程式所建,用來從使用者取得其他新資料來源的相關資訊之對話方塊。如果 lpszAttributes 參數未提供足夠資訊,將會出現一個對話方塊。hwndParent 參數可以是 NULL;如需詳細資訊,請參閱開放式資料庫連接 (ODBC) SDK。 lpszDriver 驅動程式說明。這是呈現給使用者的名稱,而非實體的驅動程式名稱 (即 DLL)。 lpszAttributes 以「keyname=value」形式表示的屬性清單。這些字串會 Null 終端子 (Terminator) 分隔,在清單結尾會以連續兩個 Null 終端子表示。這些屬性主要是預設的驅動程式特定項目,其將會成為新資料來源的登錄資料。DBC API 參考函式有一個尚未提及的重要關鍵,即可以指定新資料來源名稱的 DSN (「資料來源名稱」)。項目的其他部分則專屬於新資料來源的驅動程式。由於驅動程式會在對話方塊向使用者要求新值,因此通常並不需要提供所有的項目 (將 hwndParent 設定成 NULL 來達成這個目的)。您可以明確地提供預設值,這樣使用者就不會接到這種要求。 若要決定使用 ODBC 管理員程式的 lpszDriver 參數之驅動程式說明 執行 ODBC 管理員程式。
按一下 [加入]。
您將會取得一份已安裝的驅動程式清單及其說明。將這個說明當成 lpszDriver 參數使用。請注意,您需要使用整個說明,例如「Excel Files (*.xls)」,其中包括了副檔名和可能出現在說明中的括弧。
另外一種做法是,您可以檢查登錄 (針對 16 位元,則是在 ODBCINST.INI 檔案中),其包含了一份所有驅動程式項目清單,和「ODBC Drivers」登錄機碼 (Registry Key) 下的說明 (或是 ODBCINST.INI 檔案中的 [ODBC Drivers] 區段)。
尋找 lpszAttributes 參數的關鍵名稱和值的一種方式,是檢查一個已完成設定的資料來源 (可能是由 ODBC 管理員程式完成設定) 之 ODBC.INI 檔案:若要尋找 lpszAttributes 參數的關鍵名稱和值
執行 Windows 登錄編輯器 (若是針對 16 位元,請開啟 ODBC.INI 檔案)。
使用下列其中之一,尋找 ODBC 資料來源資訊。 若是 32 位元,請尋找左窗格中的 HKEY_CURRENT_USER/Software/ODBC/ODBC.INI/ODBC Data Sources 機碼。 右窗格則列出形式項目:pub: REG_SZ:<data source name>,其中 <data source name> 是一個以您希望使用的驅動程式之所需設定完成設定的資料來源。選取您希望使用的資料來源,例如 SQL Server。接在 pub: 字串後的項目依照順序是,關鍵名稱和用在您的 lpszAttributes 參數中的值。

若是 16 位元,請在 ODBC.INI 檔案中尋找由 [<data source name>] 標誌的區段。 接在這行之後的行形式為「keyname=value」。這些是實際上將用於您的 lpszAttributes 參數中的項目。

您可能也需要查閱您將使用的特定驅動程式文件。您可以執行 ODBC 管理員,在線上說明中找到該驅動程式的有用資訊。這些說明檔案在 Windows NT、Windows 3.1 或 Windows 95 上通常是放置在 WINDOWS/SYSTEM 目錄中。若要取得您的 ODBC 驅動程式之線上說明
執行 ODBC 管理員。
按一下 [加入]。
選取驅動程式名稱。
請按一下 [確定]。
請在 ODBC 管理員為建立一個新的資料來源而顯示該特定驅動程式資訊時,按一下 [說明]。如此就可以開啟該特定驅動程式的說明檔案,其內通常包含了使用驅動程式的重要資訊。
如需相關資訊,請參閱 MSDN 文件中開放式資料庫連接 (ODBC) SDK 的<Installer DLL 函式參考手冊>。

請參閱

資料來源 (ODBC)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息