显示一个连接字符串对话框

22

我正在尝试使用C#创建一个程序,该程序能够创建、备份和恢复SQL Server数据库。

为了实现这一目标,用户需要能够设置所需SQL Server(和数据库)的连接字符串。

我希望使用与Visual Studio创建连接字符串相同的对话框。

这是否可行?

8个回答

28

此答案中链接的数据连接对话框组件不再提供下载。

然而,一个(显然有些修改过的)DataConnectionDialog组件已经在NuGet上可用

安装:

通过NuGet包管理器控制台将组件添加到您的Visual Studio项目中:

Install-Package DataConnectionDialog

使用示例:

// using Microsoft.Data.ConnectionUI;
// using System.Windows.Forms;

bool TryGetDataConnectionStringFromUser(out string outConnectionString)
{
    using (var dialog = new DataConnectionDialog())
    {
        // If you want the user to select from any of the available data sources, do this:
        DataSource.AddStandardDataSources(dialog);

        // OR, if you want only certain data sources to be available
        // (e.g. only SQL Server), do something like this instead: 
        dialog.DataSources.Add(DataSource.SqlDataSource);
        dialog.DataSources.Add(DataSource.SqlFileDataSource);
        …

        // The way how you show the dialog is somewhat unorthodox; `dialog.ShowDialog()`
        // would throw a `NotSupportedException`. Do it this way instead:
        DialogResult userChoice = DataConnectionDialog.Show(dialog);

        // Return the resulting connection string if a connection was selected:
        if (userChoice == DialogResult.OK)
        { 
            outConnectionString = dialog.ConnectionString;
            return true;
        }
        else
        {
            outConnectionString = null;
            return false;
        }
    }
}

12
DataConnectionDialog不再列在NuGet上。 - Jonathan Allen
Nuget 注意:所有者已将此软件包取消列出。这可能意味着该软件包已被弃用或不应再使用。 - shA.t

24

注意:下面提到的对话框组件已经不再提供下载。除非您以前检索过它,否则您可能无法使本答案中的示例代码工作。

替代方案:现在在NuGet上有一个不同的DataConnectionDialog可用。详情请参见此答案


MSDN存档库中的“数据连接对话框”(从2015年9月1日起失效)

数据连接对话框是Visual Studio发布的一个数据库工具组件。它允许用户构建连接字符串并连接到特定的数据源。尝试这个...

C#示例:

static void Main(string[] args)
{
    DataConnectionDialog dcd = new DataConnectionDialog();
    DataConnectionConfiguration dcs = new DataConnectionConfiguration(null);
    dcs.LoadConfiguration(dcd);

    if (DataConnectionDialog.Show(dcd) == DialogResult.OK)
    {
        // load tables
        using (SqlConnection connection = new SqlConnection(dcd.ConnectionString))
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM sys.Tables", connection);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine(reader.HasRows);
                }
            }
        }
    }
    dcs.SaveConfiguration(dcd);
}

这里还提供了源代码。根据许可证,我们可以将源代码集成和重新分发到我们的应用程序中。

在这里输入图片描述


1
这看起来很有前途。DataConnectionDialog 并不难找到。但是我似乎找不到 DataConnectionConfiguration 类。这个类在哪个命名空间/程序集中? - Christian Tang
1
对于那些找不到DataConnectionConfiguration的人...它在示例项目中。 - David Sherret
3
如果您不想将配置保存到文件中,您可以跳过示例项目中的DataConnectionConfiguration类,并使用项目中的几个内置调用来加载对话框:DataConnectionDialog dcd = new DataConnectionDialog(); Microsoft.Data.ConnectionUI.DataSource.AddStandardDataSources(dcd); dcd.SelectedDataSource = Microsoft.Data.ConnectionUI.DataSource.SqlDataSource; dcd.SelectedDataProvider = Microsoft.Data.ConnectionUI.DataProvider.SqlDataProvider; DataConnectionDialog.Show(dcd); - nekno
4
只是为了记录,现在它是一个Nuget包:https://www.nuget.org/packages/DataConnectionDialog/ - Oscar
5
DataConnectionDialog不再列在NuGet上。 - Jonathan Allen
这个组件是否支持使用Active Directory作为认证类型? - DuroForce

3
我认为这里所有其他的答案都已经过时了,但是我在code.msdn.microsoft.com找到了一种当前的解决方案:

在运行时使用Microsoft Visual Studio连接对话框

在Visual Studio中,当开发人员想要为数据库表创建强类型类,无论是用于传统的TableAdapter还是Entity Framework,在此过程中都会显示一个对话框,如下所示。我将向您展示如何在运行时执行此操作。

下载的内容是一个解决方案,它会生成以下dll:

  • Microsoft.Data.ConnectionUI.Dialog.dll

  • Microsoft.Data.ConnectionUI.dll

  • Microsoft.Data.DataConnectionConfiguration.dll

该解决方案还包含一个演示应用程序,展示了如何使用它们。 对我很有用,而且非常容易。


4
同样是链接失效。 - user2091150
如果您能告诉我们正确的链接,那就太好了。谢谢。 - NoChance
1
https://www.nuget.org/packages/Microsoft.Data.ConnectionUI/ - Andrew

3

可以和不可以。

技术上是可能的,但我建议您不要这样做;那个对话框是Visual Studio的一部分,而且没有列在“redist”中。我的理解是你不能自由地重新分发这个dll。


2
根据此链接https://connect.microsoft.com/VisualStudio/feedback/details/291885/microsoft-data-connectionui-dll-and-microsoft-data-connectionui-dialog-dll和http://blogs.msdn.com/b/vsdata/archive/2010/02/02/data-connection-dialog-source-code-is-released-on-code-gallery.aspx,该组件的源代码已发布。 - Ranhiru Jude Cooray

0


0

-1

创建类似于“服务器资源管理器连接设置”窗口的自定义表单,并实现它。您不能使用专为VS设计的该表单。


@stakx - 现在你的答案指向了一个已经不存在的Nuget包,这并不会误导人。 - NoChance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接