如何設定即時的 ODBC 資料來源

文章翻譯 文章翻譯
文章編號: 110507 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

您可以以程式設計方式設定 ODBC (開放式資料庫連接) 資料來源名稱。這可讓您彈性地匯出資料不強迫使用者明確使用 ODBC 管理員或其他程式來指定資料來源名稱。這可能,例如讓您使用 ODBC API (應用程式發展介面) 來匯出.XLS 檔案的程式。若要執行此動作使用 SQLConfigDataSource() 函數。

下列範例會使用 SQLConfigDataSource 建立新的 Excel 資料來源稱為 「 新的 Excel 資料來源 」:
   SQLConfigDataSource(NULL,ODBC_ADD_DSN,
     (LPSTR) "Excel Files (*.xls)",
     (LPSTR) "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 檔案的一個資料表)。

如需有關建立資料表的詳細資訊,請參閱下列的發行項 「 Microsoft 知識庫 」 中:
110508建立資料表具有基礎資料庫類別
下列資訊將告訴您需要傳遞至 SQLConfigDataSource() ODBC API 函式的參數。若要將 SQLConfigDataSource() 函式中,您必須包含 ODBCINST.H 標頭檔,用 ODBCINST.LIB 匯入程式庫。

注意: 對 32 位元應用程式必須仍然包含 ODBCINST.H 標頭檔不過您現在必須連結 ODBCCP32.lib

注意: '程式設計與 MFC 百科' 隨附 Visual C++ 4.0 中重複的本文中所包含的資訊。發行項可以找到 SQLConfigDataSource"搜尋,並選取標題為發行項 '常見問題集: Programatically 設定 ODBC 資料來源'。

其他相關資訊

注意: 這篇文章原來已撰寫 16 位元 ODBC 元件只。16 位元 ODBC 元件使用 INI 檔案來儲存設定資料來源 (ODBC.INI) 上的資訊,和安裝的驅動程式 (ODBCINST.INI)。32 位元 ODBC 元件不會再使用 [INI 檔案,但改,將這類資訊寫入登錄。系統資料來源資訊分別儲存在 HKEY_LOCAL_MACHINE\SOFTWARE\ ODBC\ ODBC.INI 和 ODBCINST.INI 中, 已安裝的驅動程式資訊。非系統資料來源儲存在 HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI。在本文部分參考 ODBC.INI 應該解譯成參照到登錄的適當的區段,如果您使用的 32 位元 ODBC 元件。

可以使用 ODBC 管理員程式或類似公用程式來建立 ODBC 資料來源的名稱。不過,有時是很理想,這樣可取得存取權,而不需要使用者執行不同的公用程式,直接從您的應用程式建立資料來源名稱。

ODBC 管理員 (通常是安裝在 Windows 控制台中) 會將項目放在 ODBC.INI 檔案中建立新的資料來源。這個檔案被查詢藉由 「 ODBC 驅動程式管理員 」 來取得資料來源所需的資訊。很重要的一點就是要知道,因為您將需要提供對 SQLConfigDataSource() 呼叫,放在 [ODBC.INI 需要何種資訊。

雖然這項資訊可以直接寫入 ODBC.INI 檔案 [不使用 SQLConfigDataSource()],這麼做的任何應用程式會依賴目前驅動程式管理員會使用來維護其資料的技巧。如果稍後修訂 ODBC 驅動程式管理員會實作,記錄 [保留資料來源的不同的方式然後用這項技術的任何應用程式就會中斷。通常最好時提供一個使用一個 API 函式是。

下面,您會發現 SQLConfigDataSource() 函式的參數的說明。許多資訊是來自 [ODBC API 程式設計人員參考 》 的隨附 Visual C++ 版本 1.5。 函式原型 (Prototype):
   BOOL SQLConfigDataSource(HWND hwndParent,UINT fRequest,
                            LPCSTR lpszDriver,
                            LPCSTR lpszAttributes);
hwndParent-這是將作為擁有者的任何對話方塊是由驅動程式管理員] 或 [特定的 ODBC 驅動程式] 從新的資料來源的相關使用者取得其他資訊所建立的視窗。如果沒有足夠的資訊提供 lpszAttributes] 參數中會出現一個對話方塊。 這個參數可能是 NULL,請參閱特定內容的參考。

fRequest-要執行的作業。可能的值:
                      ODBC_ADD_DSN: Add new user data
                        source.
                      ODBC_CONFIG_DSN: Modify an
                        existing data source.
                      ODBC_REMOVE_DSN: Remove an
                        existing data source.
下列的值才適用於 ODBC 2.53.0 或稍後 32 位元:
                      ODBC_ADD_SYS_DSN: Add a new
                        system data source.
                      ODBC_CONFIG_SYS_DSN: Modify
                        an existing system data
                        source.
                      ODBC_REMOVE_SYS_DSN: Remove
                        an existing system data
                        source.
lpszDriver 驅動程式描述。如文件提及,這是呈現給使用者,而不是實體的驅動程式 (DLL) 的名稱。您可以決定使用 ODBC 管理員程式,如下所示的驅動程式的說明:

  1. 執行 ODBC 管理員程式。
  2. 選擇 [加入。這會讓您安裝的驅動程式清單。
清單包含驅動程式說明。它是您將會作為 lpszDriver 參數此描述。請注意 [適用範例為 「 Excel 檔案 (*.xls) 」] 使用比例描述包括副檔名和括號,如果它們存在於描述。

選擇性地,您可以檢查檔案 ODBCINST.INI 其中包含所有的驅動程式項目及 [ODBC 驅動程式] 一節中的描述的清單。

lpszAttributes 清單在表單中的屬性"keyname = 值 」。 這些字串是以與終端兩個連續 null 子清單的結尾的 Null 終端子分隔。 這些屬性主要是將會預設驅動程式特定項目,可移至新的資料來源的 ODBC.INI 檔案。一個重要的關鍵,不述 DBC API 參考函式是"DSN"即可以指定新的資料來源名稱。其餘的項目都是用新的資料來源驅動程式特定的。通常時間它不需要提供 ALL 的項目,因為驅動程式便會提示使用者 (如果 hwndParent 不是 NULL) 與新值的對話方塊。您可能要明確供應預設值,以便不提示使用者。

尋找 keynames 和其值的一個方法是檢查登錄項目已經設定的資料來源 (或許是一個 ODBC 管理員程式已設定的):

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756如何備份和還原在 Windows 登錄

  1. 使用 regedit 前往 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\
  2. 尋找對應至資料來源名稱的 Hive。 那里您會發現關鍵字配對。 警告,手動編輯登錄值會造成系統不穩定和可能發生無法復原失敗。
您也可以檢查您要使用特定的驅動程式的說明文件。驅動程式可由執行 ODBC 管理員存取線上說明中可以找到有用的資訊: 按一下 [新增],選取驅動程式的名稱,然後按一下 [確定]。當建立新的資料來源的資訊會出現該特定驅動程式時,選取 [說明]。這會開啟說明檔通常包含重要的資訊有關的驅動程式使用該特定驅動程式。

?考

ODBC 程式設計人員參考和 SDK 快速入門 (使用線上叢書 》 中)。

屬性

文章編號: 110507 - 上次校閱: 2004年6月29日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft Data Access Components 1.5
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
關鍵字:?
kbmt kbdatabase kbhowto KB110507 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:110507
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com