C# 显示ConnectionString对话框

C# 显示ConnectionString对话框,c#,sql,sql-server,connection-string,C#,Sql,Sql Server,Connection String,我正在尝试用C语言创建一个程序,它应该能够创建、备份和恢复SQL Server数据库 为此,用户需要能够设置到所需SQL Server(和数据库)的连接字符串 我希望使用与Visual Studio示例相同的对话框来创建连接字符串 这可能吗?创建自己的表单,类似于“服务器资源管理器连接设置”窗口,并实现它。您不能使用表示VS是和否的表单 是的,但我劝你不要这样做;该对话框是VisualStudio的一部分,并在“redist”中列出。我的解释是,您不能自由地重新分发此dll。您可以使用UDL文件

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

为此,用户需要能够设置到所需SQL Server(和数据库)的连接字符串

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


这可能吗?

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

是和否的表单

是的,但我劝你不要这样做;该对话框是VisualStudio的一部分,并在“redist”中列出。我的解释是,您不能自由地重新分发此dll。

您可以使用UDL文件

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

备选方案:现在有一个不同的方案。有关详细信息,请参阅


(截至2015年9月1日中断)


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

C#样本:

这里也提供了源代码。我们可以根据许可证将源代码与应用程序集成并重新发布


中链接到的数据连接对话框组件不再可供下载

然而,一个(显然有点改变的)
DataConnectionDialog
组件后来变成了

安装: 通过NuGet package manager控制台将组件添加到Visual Studio项目:

安装软件包DataConnectionDialog
用法示例:
您可以使用Nuget软件包。

我认为这里的所有其他答案都过时了,但我在以下位置找到了当前的解决方案:

在运行时使用Microsoft Visual Studio连接对话框 在VisualStudio中,当开发人员想要为传统的
TableAdapter
或实体框架的数据库表创建强类型类时,过程中会显示一个对话框,如下所示。我将向您展示如何在运行时执行此操作,以及更多内容

下载是一个构建以下DLL的解决方案:

  • Microsoft.Data.ConnectionUI.Dialog.dll

  • Microsoft.Data.ConnectionUI.dll

  • Microsoft.Data.DataConnectionConfiguration.dll

该解决方案还包含一个示例应用程序,说明如何使用它们。
为我做了一件非常简单的事情。

我创建了一些代码来实现这一点。代码在GitHub中,您可以在此处了解:

根据此链接和,此组件的源代码已发布。这看起来很有希望。数据连接对话框并不难找到。但我似乎找不到DataConnectionConfiguration类。该类位于哪个命名空间/程序集?对于找不到DataConnectionConfiguration的任何其他人。。。它在示例项目中。如果不想将配置保存到文件中,可以从示例项目中跳过
DataConnectionConfiguration
类,并使用项目中的两个内置调用加载对话框:
DataConnectionDialog dcd=newdataconnectiondialog();Microsoft.Data.ConnectionUI.DataSource.AddStandardDataSources(dcd);dcd.SelectedDataSource=Microsoft.Data.ConnectionUI.DataSource.SqlDataSource;dcd.SelectedDataProvider=Microsoft.Data.ConnectionUI.DataProvider.SqlDataProvider;数据连接对话显示(dcd)仅作记录,它现在是一个Nuget包:DataConnectionDialog不再列在Nuget上。DataConnectionDialog不再列在NuGetNuget上注意:所有者未列出此包。这可能意味着该软件包已被弃用或不应再使用。此外,链接已断开。如果您能告诉我们正确的链接,那就太好了。谢谢。@stakx-现在您的答案指向的是不再存在的Nuget包,这并没有误导。
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);
}
// 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;
        }
    }
}