C# app.config文件中有多个SQL Server连接字符串

C# app.config文件中有多个SQL Server连接字符串,c#,sql-server,connection-string,app-config,C#,Sql Server,Connection String,App Config,我感兴趣的是在Windows窗体应用程序中显示N个单选按钮的列表,供用户选择目标数据库服务器。我想在app.config文件中添加SQL Server连接字符串,以便应用程序在运行时读取这些字符串,并将其作为单选按钮呈现在windows窗体中 起初,我考虑使用分隔符来分隔连接 <appSettings> <add key="ConnectionString" value="connection1|user id=user;password=123;server=10

我感兴趣的是在Windows窗体应用程序中显示N个单选按钮的列表,供用户选择目标数据库服务器。我想在app.config文件中添加SQL Server连接字符串,以便应用程序在运行时读取这些字符串,并将其作为单选按钮呈现在windows窗体中

起初,我考虑使用分隔符来分隔连接

  <appSettings>
    <add key="ConnectionString" value="connection1|user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30|connection2|user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/>
</appSettings>

然后拆分键值对


可以用不同的方法来做吗?

是的,可以用另一种方法来做。检查可在app.config文件中创建的ConnectionString部分

<configuration>
   <connectionStrings>
       <add name="" connectionString=""/>
        <add name="" connectionString=""/>
    </connectionStrings>
</configuration>

使用ConnectionString部分定义连接字符串

<connectionStrings>
    <add name="connection1" connectionString="user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30"/>
    <add name="connection2" connectionString="user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/>
</connectionStrings>

您可以使用该类,获取以ConnectionString开头的所有内容的列表并显示它们

您的配置文件如下所示:

<appSettings>
  <add key="ConnectionString_Name1" value="..."/>
  <add key="ConnectionString_Name2" value="..."/>
  <add key="ConnectionString_Name3" value="..."/>
</appSettings>
键名(在本例中使用“25;”)


顺便说一句:您也应该使用该部分,您只需要连接字符串。

要从app.config中找到所有已定义的连接字符串,请使用
ConfigurationManager
(来自System.Configuration)

<connectionStrings>
    <add name="connection1" connectionString="user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30"/>
    <add name="connection2" connectionString="user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/>
</connectionStrings>
它有一个枚举:
ConfigurationManager.connectionString
,其中包含
中的所有条目

您可以使用以下代码对其进行循环:

foreach(ConnectionStringSettings css in ConfigurationManager.ConnectionStrings)
{
   string name = css.Name;
   string connString = css.ConnectionString;
   string provider = css.ProviderName;
}
名称
只是您为连接字符串指定的符号名称-它可以是任何东西,真的

ConnectionString
是连接字符串本身

ProviderName
是连接的提供程序的名称,例如用于SQL Server的
System.Data.SqlClient
(其他用于其他数据库系统)。如果在配置中从连接字符串中省略
providerName=
属性,则默认为SQL Server(System.Data.SqlClient)


Marc

我们可以在Web.Config或App.Config下声明多个连接字符串

<connectionStrings>
<add name="SourceDB" connectionString="..." />
<add name="DestinationDB" connectionString="..." />
</connectionStrings>

在DAL或.cs文件中,您可以访问如下连接字符串
string SounceConnection=ConfigurationManager.ConnectionStrings[“SourceDB”].ConnectionString;

字符串DestinationConnection=ConfigurationManager.ConnectionString[“DestinationDB”]。ConnectionString

这是如何使用LINQ获取连接字符串列表:

List<string> connectionStrings = ConfigurationManager.ConnectionStrings
    .Cast<ConnectionStringSettings>()
    .Select(v => v.ConnectionString)
    .ToList();
List connectionStrings=ConfigurationManager.connectionStrings
.Cast()
.选择(v=>v.ConnectionString)
.ToList();
或者,您可以为其建立一个字典:

Dictionary<string/*name*/, string/*connectionString*/> keyValue = ConfigurationManager.ConnectionStrings
    .Cast<ConnectionStringSettings>()
    .ToDictionary(v => v.Name, v => v.ConnectionString);
Dictionary keyValue=ConfigurationManager.connectionString
.Cast()
.ToDictionary(v=>v.Name,v=>v.ConnectionString);

我绝对建议您改用app.config中的
部分-这就是它真正的用途!如何通过“ConnectionString”元素的子元素循环以获取所有键值对。foreach(ConfigurationManager.ConnectionString中的ConnectionString设置connSettings){}获取machine.config中的连接字符串,而不仅仅是app.config中的连接字符串