是否有任何简单的方法可以从 winforms 应用程序显示标准 Windows 数据源对话框?
我想向用户展示它并选择一个系统 dsn 或创建一个新的并返回一个数据源名称。我没有在 .net 中找到对现有包装器的任何引用,所以我想我只能为此使用 win API。任何现有的解决方案或代码片段将不胜感激。
似乎无法从此对话框中获取选定的数据源名称。这是可用于调用此对话框(链接)的 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 驱动程序)从 .NET
动态添加 DSN 名称ODBC 驱动程序列表
由于这是存储在注册表中的所有数据,您可以在此处获得可用的 ODBC 连接列表:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
把它包起来,但是你想让它变得漂亮。
这里有一些关于查询注册表的好信息