如何显示标准的Windows数据源(ODBC)对话框

有没有什么简单的方法来显示从WinForms应用程序的标准Windows数据源对话框

在这里输入图像说明

我想显示给用户,并select一个系统dsn或创build一个新的并返回一个数据源名称。 我还没有find任何在.net中的现有包装的引用,所以我想我只能使用一个WIN API。 任何现有的解决scheme或代码片段将不胜感激。

Solutions Collecting From Web of "如何显示标准的Windows数据源(ODBC)对话框"

看来,从这个对话框中获取选定的数据源名称是不可能的。 这里是可以用来调用这个对话框( 链接 )的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是一个父窗口句柄。 对话框只显示有效的窗口句柄。 尽管我无法以这种方式选择数据源,但我至少可以使用现有的标准工具来添加,更改或删除数据源。 否则,我需要创建一个自定义的。

也许你可以为它创建一个自定义的窗口,用户可以插入/选择一个DSN。
有一些例子说明了如何手动插入新的DSN并列出已经在机器上配置的DSN:

检查系统DSN并创建系统DSN(如果不存在)(iSeries Access ODBC驱动程序)
动态添加DSN名称
.NET的ODBC驱动程序列表

由于这是存储在注册表中的所有数据,因此您可以在这里获得可用的ODBC连接列表:

 HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 

把这个包起来,不过你想让它变得漂亮。

这里有一些关于查询注册表的好信息