【问题标题】:How to show a standard windows data sources (ODBC) dialog如何显示标准 Windows 数据源 (ODBC) 对话框
【发布时间】:2013-01-26 19:38:24
【问题描述】:

有没有什么简单的方法可以从 winforms 应用程序显示标准的 windows 数据源对话框?

我想向用户展示它并选择一个系统 dsn 或创建一个新的 dsn 并返回一个数据源名称。我没有在 .net 中找到对现有包装器的任何引用,所以我想我只能为此使用 win API。任何现有的解决方案或代码的 sn-p 将不胜感激。

【问题讨论】:

  • 您始终可以执行打开窗口的进程(在 32 位情况下为 odbcad32.exe)。但我想这不会给你包装功能,因为它可能不会向你的应用程序返回任何东西。它返回究竟需要什么?
  • @Mt.Schneiders 我需要返回选定的数据源名称。这可能是在对话框中动态创建的数据源。

标签: c# windows winforms dialog odbc


【解决方案1】:

似乎无法从此对话框中获取选定的数据源名称。这是可用于调用此对话框的winapi函数(link):

BOOL SQLManageDataSources(HWND hwnd);

这是一个sn-p:

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

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

参数 hwnd 是父窗口句柄。对话框仅针对有效的窗口句柄显示。 尽管我不能以这种方式选择数据源,但我至少可以提供使用现有标准工具添加、更改或删除数据源的能力。否则我需要创建一个自定义的。

【讨论】:

    【解决方案2】:

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

    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
    

    把它包起来,让它变得漂亮。

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

    【讨论】:

    • 谢谢。实际上查询数据源名称对我来说没有问题。但我想使用标准对话框来获取其中一个,它还允许在需要时创建新数据源、重命名或更改我不想从头开始创建的设置。
    • 哦,我明白了。好吧...忽略这个答案。这就是我的全部
    【解决方案3】:

    也许您可以为其创建一个自定义窗口,用户可以在其中插入/选择 DSN。
    有一些关于如何手动插入新的 DSN 并列出机器上已配置的 DSN 的示例:

    Check for System DSN and create System DSN if NOT Existing (iSeries Access ODBC Driver)
    Dynamically adding DSN-names
    ODBC Driver List from .NET

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多