C# 显示ConnectionString对话框
我正在尝试用C语言创建一个程序,它应该能够创建、备份和恢复SQL Server数据库 为此,用户需要能够设置到所需SQL Server(和数据库)的连接字符串 我希望使用与Visual Studio示例相同的对话框来创建连接字符串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文件
这可能吗?创建自己的表单,类似于“服务器资源管理器连接设置”窗口,并实现它。您不能使用表示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;
}
}
}