C# .NETC中的SqlConnectionStringBuilder表单#
我想知道如何将数据链接表单添加到WIN应用程序中。 您知道用户可以在哪些表单上选择要连接的SQL server 以及他们将在wht数据库上使用什么类型的安全性 像这张照片上的一样C# .NETC中的SqlConnectionStringBuilder表单#,c#,.net,sql,database-connection,C#,.net,Sql,Database Connection,我想知道如何将数据链接表单添加到WIN应用程序中。 您知道用户可以在哪些表单上选择要连接的SQL server 以及他们将在wht数据库上使用什么类型的安全性 像这张照片上的一样 您可以通过一些COM介绍来实现这一点……但随后您必须将一组互操作程序集引入到您的项目中,这可能是一种拖拉。此代码将使用反射显示对话框 public static string ShowDialog( IWin32Window owner, string
您可以通过一些COM介绍来实现这一点……但随后您必须将一组互操作程序集引入到您的项目中,这可能是一种拖拉。此代码将使用反射显示对话框
public static string ShowDialog( IWin32Window owner,
string connectionString )
{
Type dlType = Type.GetTypeFromProgID( "DataLinks", true );
Type acType = Type.GetTypeFromProgID( "ADODB.Connection", true );
object form = Activator.CreateInstance( dlType );
object connection = Activator.CreateInstance( acType );
acType.InvokeMember(
"ConnectionString",
BindingFlags.Public | BindingFlags.SetProperty,
null,
connection,
new object[]{ connectionString }
);
object result =
dlType.InvokeMember(
"PromptEdit",
BindingFlags.Public | BindingFlags.InvokeMethod,
null,
form,
new object[]{ connection }
);
if( result != null && (bool)result )
return acType.InvokeMember(
"ConnectionString",
BindingFlags.Public | BindingFlags.GetProperty,
null,
connection,
new object[]{} ) as string;
return null;
}
这基本上转化为以下VB脚本
form = GetObject( "DataLinks" )
connection = GetOBject( "ADODB.Connection" )
connection.ConnectionString = "existing connection"
form.PromptEdit( connection )
Return connection.ConnectionString
您可以通过一些COM介绍来实现这一点……但随后您必须将一组互操作程序集引入到您的项目中,这可能是一种拖累。此代码将使用反射显示对话框
public static string ShowDialog( IWin32Window owner,
string connectionString )
{
Type dlType = Type.GetTypeFromProgID( "DataLinks", true );
Type acType = Type.GetTypeFromProgID( "ADODB.Connection", true );
object form = Activator.CreateInstance( dlType );
object connection = Activator.CreateInstance( acType );
acType.InvokeMember(
"ConnectionString",
BindingFlags.Public | BindingFlags.SetProperty,
null,
connection,
new object[]{ connectionString }
);
object result =
dlType.InvokeMember(
"PromptEdit",
BindingFlags.Public | BindingFlags.InvokeMethod,
null,
form,
new object[]{ connection }
);
if( result != null && (bool)result )
return acType.InvokeMember(
"ConnectionString",
BindingFlags.Public | BindingFlags.GetProperty,
null,
connection,
new object[]{} ) as string;
return null;
}
这基本上转化为以下VB脚本
form = GetObject( "DataLinks" )
connection = GetOBject( "ADODB.Connection" )
connection.ConnectionString = "existing connection"
form.PromptEdit( connection )
Return connection.ConnectionString
更多信息。更多信息。我认为最好的选择是使用Microsoft提供的代码: 它是VisualStudio内部使用的连接对话框
但是,它只适用于注册的ADO.NET提供程序。我认为最好的选择是使用Microsoft提供的代码: 它是VisualStudio内部使用的连接对话框
但是,它只适用于已注册的ADO.NET提供程序。我再次对这个问题感到困惑,现在我尝试从app.config文件发送连接sting以填充初始参数,但我总是在object result=dlType.InvokeMember上获得exeption。Thanx in advice中的任何建议实际上可能有助于打开一个新的问题,以便为其他人记录整个问题/解决方案。Thanx在您的关注下,我将尝试一段时间,如果我无法理解,那么我将打开一个新的SO,但我有点不好意思让一次又一次的人为我编写代码。最好的敬意不是羞耻……我们都必须从某个地方学习。很多这类东西都很奇怪,你只能一次把头撞在墙上好几天才能学会。我又一次被这个问题压得喘不过气来,现在我尝试从app.config文件发送连接sting来填充初始参数,但我总是得到object result=dlType.InvokeMember的验证。Thanx in advice中的任何建议实际上可能有助于打开一个新的问题,以便为其他人记录整个问题/解决方案。Thanx在您的关注下,我将尝试一段时间,如果我无法理解,那么我将打开一个新的SO,但我有点不好意思让一次又一次的人为我编写代码。最好的敬意不是羞耻……我们都必须从某个地方学习。很多这些东西都很奇怪,你只能通过一次用头撞墙几天来学习。