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

时间:2009-10-07 08:31:52

标签: c# sql-server connection-string app-config

我有兴趣在Windows窗体应用程序中显示N个单选按钮列表,供用户选择目标数据库服务器。我想在app.config文件中添加SQL Server连接字符串,因此它们在运行时由应用程序读取,并在窗体中作为单选按钮呈现。

起初我想过使用分隔符分隔连接

  <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>

然后拆分键值对。

是否有可能以不同的方式做到这一点?

6 个答案:

答案 0 :(得分:31)

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

它有一个枚举:ConfigurationManager.ConnectionStrings,其中包含<connectionStrings>中的所有条目。

您可以使用以下代码循环显示它:

foreach(ConnectionStringSettings css in ConfigurationManager.ConnectionStrings)
{
   string name = css.Name;
   string connString = css.ConnectionString;
   string provider = css.ProviderName;
}

Name只是你给连接字符串的符号名称 - 它可以是任何东西,真的。

ConnectionString是连接字符串本身。

ProviderName是连接提供商的名称,例如{1}用于SQL Server(以及其他用于其他数据库系统的用户)。如果省略config中连接字符串的System.Data.SqlClient属性,则默认为SQL Server(System.Data.SqlClient)。

马克

答案 1 :(得分:13)

使用connectionStrings部分定义连接字符串。

<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>

答案 2 :(得分:3)

是的,可以用另一种方式做到这一点。检查您可以在app.config文件中创建的connectionStrings部分。

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

答案 3 :(得分:1)

我们可以在Web.Config或App.Config

下声明多个连接字符串
<connectionStrings>
<add name="SourceDB" connectionString="..." />
<add name="DestinationDB" connectionString="..." />
</connectionStrings>

在DAL或.cs文件中,您可以访问类似此string SounceConnection = ConfigurationManager.ConnectionStrings["SourceDB"].ConnectionString; string DestinationConnection = ConfigurationManager.ConnectionStrings["DestinationDB"].ConnectionString;

的连接字符串

答案 4 :(得分:0)

您可以使用AppSettings类,获取以ConnectionString开头的所有keys的列表并显示它们。

您的配置文件如下所示:

<appSettings>
  <add key="ConnectionString_Name1" value="..."/>
  <add key="ConnectionString_Name2" value="..."/>
  <add key="ConnectionString_Name3" value="..."/>
</appSettings>

您可以通过splitting键名称获取名称(在此示例中使用“_”)。

顺便说一句:您应该也使用ConnectionStrings部分,您只对连接字符串感兴趣。

答案 5 :(得分:0)

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

# Background color for matching quotes and parenthesis
set fish_color_match <your_color>

或者您可以构建它的字典:

List<string> connectionStrings = ConfigurationManager.ConnectionStrings
    .Cast<ConnectionStringSettings>()
    .Select(v => v.ConnectionString)
    .ToList();