显示ConnectionString对话框

我正在尝试在C#中创建一个应该能够创建,备份和还原SQL Server数据库的程序。

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

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

这可能吗?

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

替代方案:现在NuGet上有一个不同的DataConnectionDialog 。 请参阅此答案了解详情。


MSDN Archive Gallery上的“数据连接对话框” (截至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); } 

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

在此处输入图像描述

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

但是,一个(显然有点改动的) 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 // (eg 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; } } } 

是的,不是。

是的,这在技术上是可行的 ,但我劝你不要; 该对话框是Visual Studio的一部分,并在“redist”中列出。 我的解释是你不能自由重新发布这个dll。

我认为这里的所有其他答案都已过时,但我在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

该解决方案还包含一个示例应用程序,显示如何使用它们。 为我工作,这是非常容易的。

您可以使用UDL文件。

配置数据控件以使用通用数据链接(.udl)文件

您可以使用SQLConnectionStringUI Nuget包。

创建自己的表单,类似于Server Explorer连接设置窗口,并实现它。 你不能使用那个用于VS的forms