2013-02-11 118 views
3

是否有任何簡單的方法來顯示從winforms應用程序的標準Windows數據源對話框?如何顯示標準的Windows數據源(ODBC)對話框

enter image description here

我想展示給用戶,並拿起一個系統DSN或創建一個新的,並返回一個數據源名稱。我沒有發現任何對.net中現有包裝的引用,所以我想我只能使用一個win API。任何現有的解決方案或代碼片段將不勝感激。

+0

您可以隨時執行打開窗口的過程(32位大小寫的odbcad32.exe)。但我想這不會給你包裝功能,因爲它可能不會返回任何東西到你的應用程序。你需要什麼來回報? – 2013-02-11 18:01:39

+0

@ Mt.Schneiders我需要返回選定的數據源名稱。這可能是在對話框中創建的數據源。 – username 2013-02-11 18:05:15

回答

1

一些好的信息這似乎是不可能從該對話框獲得所選擇的數據源名稱。這裏是一個可以用來調用該對話框(link)的WINAPI功能:

BOOL SQLManageDataSources(HWND hwnd); 

這裏是一個片段:

[DllImport("ODBCCP32.dll", CharSet = CharSet.Unicode, SetLastError = true)] 
private static extern bool SQLManageDataSources(IntPtr hwnd); 

private void ShowDataSourceDialog() 
{ 
    SQLManageDataSources(Handle); 
} 

參數hWnd是父窗口處理。對話框僅顯示有效的窗口句柄。 儘管我無法以這種方式選擇數據源,但我至少可以提供使用現有標準工具添加,更改或刪除數據源的功能。否則,我需要創建一個自定義的。

0

由於這是存儲在註冊表中,你可以得到的所有數據這裏可用的ODBC連接列表:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 

把這個包裹起來,不過你想讓它變得漂亮。

有一個關於查詢註冊表here

+0

謝謝。實際上我沒有問題來查詢數據源名稱。但我想用標準對話框來獲取其中的一個,它還允許根據需要創建新的數據源,對其重命名或更改我不想從頭開始創建的設置。 – username 2013-02-11 18:30:54

+0

哦,我明白了。好吧...忽略這個答案。這是我得到的 – Brad 2013-02-11 18:34:12