iluxa1810 Asked:2020-09-27 15:40:17 +0000 UTC2020-09-27 15:40:17 +0000 UTC 2020-09-27 15:40:17 +0000 UTC .NET 中有 ConnectionDialog 吗? 772 如果在 .NETConnectionDialog中用户可以从数据库和目录中选择服务器? 我找到了某种类DataLinks,但它似乎是 COM 的,以及 NUGET 上的一些 2010 库。 有开箱即用或更新鲜的东西吗? c# 2 个回答 Voted Best Answer BlackWitcher 2020-10-25T02:26:21Z2020-10-25T02:26:21Z 开箱即用(几乎)有一个名为 Microsoft Data Connection Dialog 的解决方案: Habré 上有一篇关于如何正确烹饪的文章。但是它很旧,并且由于链接不是很有效而不太相关。 不过,MSDN 上有这个类的描述,也有创建此类窗口的工厂。 同样在英语中,SO 有一个关于这个对话的问题(有答案)。 它也存在于 NuGet 中,但早期版本的日期是 2011 年。使用哪个版本(以及是否使用)由您决定。 此外,该项目还有更多最新的源代码,现在可以在GitHub 上使用(在撰写此答案时,最新更改是 2015 年 3 月)。从源文件的名称来看,此对话框支持: 连接到不同版本的 MS SQL Server; 连接到甲骨文; 通过 ODBC 和 OLE DB 连接到其他来源。 恕我直言:就个人而言,我会使用 Github 版本。 nick_n_a 2020-10-25T19:43:20Z2020-10-25T19:43:20Z OleDB 接口支持这个,我在某处看到了一个用 c++ 编写的示例。在 C# 中,这可以通过 ADO 完成,如下所示: using System.Reflection; using System.Runtime.InteropServices; public string GetConnectionString(string str) { string connectionString=string.Empty; // возвращаемая строка подключения object cn=null, // ADODB.Connection ud=null; // MSDASC.DataLinks try { Type AdoDbConnectionType=Type.GetTypeFromProgID("ADODB.Connection"); Type MSDascDataLinksType=Type.GetTypeFromCLSID(new Guid("{2206CDB2-19C1-11D1-89E0-00C04FD7A829}")); // создать COM объекты ADODB.Connection и MSDASC.DataLinks cn=AdoDbConnectionType.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[0]); ud=MSDascDataLinksType.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[0]); AdoDbConnectionType.InvokeMember("ConnectionString", BindingFlags.SetProperty, null, cn, new object[]{str}); if((bool)(MSDascDataLinksType.InvokeMember("PromptEdit", BindingFlags.InvokeMethod, null, ud, new object[]{cn}))) { // нажали кнопку ОК: connectionString=(string)(AdoDbConnectionType.InvokeMember("ConnectionString", BindingFlags.GetProperty, null, cn, new object[0])); } } catch{ /* обработка ошибок */ } finally { if(cn!=null) Marshal.ReleaseComObject(cn); cn=null; if(ud!=null) Marshal.ReleaseComObject(ud); ud=null; } // вернуть строку подключения return(connectionString); } 来源http://www.sql.ru/forum/120264/ne-zauchivayte-stroku-konekta#952795 在str中可以为链接输入预定义的属性,在Provider中加上提供者的名称(ODBC格式,对于例如,MSDASQL,别名是 MSSQL)。
开箱即用(几乎)有一个名为 Microsoft Data Connection Dialog 的解决方案:
Habré 上有一篇关于如何正确烹饪的文章。但是它很旧,并且由于链接不是很有效而不太相关。
不过,MSDN 上有这个类的描述,也有创建此类窗口的工厂。
同样在英语中,SO 有一个关于这个对话的问题(有答案)。
它也存在于 NuGet 中,但早期版本的日期是 2011 年。使用哪个版本(以及是否使用)由您决定。
此外,该项目还有更多最新的源代码,现在可以在GitHub 上使用(在撰写此答案时,最新更改是 2015 年 3 月)。从源文件的名称来看,此对话框支持:
恕我直言:就个人而言,我会使用 Github 版本。
OleDB 接口支持这个,我在某处看到了一个用 c++ 编写的示例。在 C# 中,这可以通过 ADO 完成,如下所示:
来源http://www.sql.ru/forum/120264/ne-zauchivayte-stroku-konekta#952795 在str中可以为链接输入预定义的属性,在Provider中加上提供者的名称(ODBC格式,对于例如,MSDASQL,别名是 MSSQL)。