我正在尝试在C#中创建一个应该能够创建,备份和还原SQL Server数据库的程序。
为此,用户需要能够为所需的SQL Server(和数据库)设置连接字符串。
我想使用与Visual Studio相同的对话框来创建连接字符串。
这可能吗?
答案 0 :(得分:25)
无法再下载链接到this answer的数据连接对话框组件。
然而,DataConnectionDialog
组件(显然有所改变)已成为available on 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;
}
}
}
答案 1 :(得分:23)
注意:下面提到的对话框组件不再可供下载。除非您过去检索过它,否则您可能无法获得此答案的示例代码。
替代方案:现在有一个不同的
DataConnectionDialog
available on NuGet。有关详细信息,请参阅this answer。
"Data Connection Dialog" on 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);
}
这里也提供源代码。我们可以根据许可证将源代码与我们的应用程序集成和重新分发。
答案 2 :(得分:4)
是和否。
是的,它是technically possible,但我劝你不要;该对话框是Visual Studio的一部分,并在“redist”中列出。我的解释是你 不 可以自由地重新发布这个dll。
答案 3 :(得分:2)
我认为这里的所有其他答案都已过时,但我在code.msdn.microsoft.com找到了当前的解决方案:
在运行时使用Microsoft Visual Studio连接对话框
在Visual Studio中,当开发人员想要为传统的
TableAdapter
或实体框架创建数据库表的强类型类时,在该过程中会有一个显示对话框的位置,如下所示。我将在运行时向您展示如何执行此操作。
下载是一个构建以下dll的解决方案:
Microsoft.Data.ConnectionUI.Dialog.dll
Microsoft.Data.ConnectionUI.dll
Microsoft.Data.DataConnectionConfiguration.dll
该解决方案还包含一个示例应用程序,展示了如何使用它们。 为我工作,这非常容易。
答案 4 :(得分:0)
答案 5 :(得分:0)
您可以使用SQLConnectionStringUI Nuget包。
答案 6 :(得分:0)
我创建了一些可以做到这一点的代码。该代码位于GitHub中,您可以在此处了解有关信息:https://csharpdeveloper.wordpress.com/2020/05/07/a-c-net-dialog-for-connecting-to-sql-server/ Lin
答案 7 :(得分:-1)
创建类似于“服务器资源管理器连接设置”窗口的自己的表单,并实现它。你不能使用那个用于VS的形式