如何在app.config文件中声明变量?

时间:2010-11-04 11:05:31

标签: c# .net winforms

我正在开发一个Windows应用程序。 我有一个带有

标签的表单
HOST:
UserName:
Password:

如何在app.config文件中声明连接字符串,以便将初始目录,用户ID和密码作为变量,我可以进一步检查用户是否要将用户连接到哪个数据库输入的用户名和密码。

我正在使用SQL Server 2008和Visual C#2008 Express Edition。

6 个答案:

答案 0 :(得分:6)

当我正在阅读您的问题时,您希望有一个通用连接字符串,您希望将用户名/密码变量注入其中。要做到这一点,你需要有一个这种格式的密钥:

<add name="myDBKey" connectionString="Data Source=myDB;Initial Catalog={0};Persist Security Info=True;User ID={1};Password={2}" providerName="System.Data.SqlClient"/>

然后在您的代码中,您需要声明并分配这些变量,然后使用String.Format来完成它。

string dbCatalog = "myCatalog";
string dbUser = "myUser";
string dbPW = "myPW";

string myDBConnectionString = String.Format(
    ConfigurationManager.ConnectionStrings["myDBKey"].ConnectionString,
    dbCatalog, dbUser, dbPW);

这会将变量注入字符串。

答案 1 :(得分:4)

<connectionString>文件有一个app.config部分。

<connectionStrings>
    <add name="MyDatabase" connectionString="Data Source=sqlserver,1433;Network Library=DBMSSOCN;Initial Catalog=MyDatabase;User ID=xxx;Password=xxxx;" />
  </connectionStrings>

对于您的主机,用户ID和密码,您可以在<appSettings>部分中定义这些内容。

答案 2 :(得分:1)

你可以做这样的事情,

<appSettings>
    <add key="SettingName" value="SettingValue" />
</appSettings>

或转到“Variables within app.config/web.config”。

答案 3 :(得分:1)

试试这个

<connectionStrings>
    <add name="ConString" connectionString="Server=Servernae;Database=DBName;User Id=username;password=yourpassword"/>
    </connectionStrings>

有关详细信息,请尝试Connection Strings

答案 4 :(得分:1)

首先通过转到项目的属性选项卡来声明变量,然后转到Settings选项卡(左侧),通过提及名称,默认值和范围(将是Application)来声明变量。

在您的代码中,要获取值:

using System.Configuration;
//....
ConfigurationSettings.AppSettings["ConnectionString"].ToString();
// or
ConfigurationSettings.AppSettings.ConnectionString;

请注意,您无法更改应用程序设置的代码值。

编辑:

或者,还可以设置connectionStrings节点(但必须在app.config文件本身中完成。请参阅MSDN了解documentation

XML示例:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="ConnStr1" connectionString="LocalSqlServer: data source=127.0.0.1 Integrated Security=SSPI;Initial Catalog=aspnetdb"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

在C#中,您将获得System.Coonfiguration.ConnectionStrings,这是ConnectionStringSettings的集合。

C#代码中的使用示例:http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.connectionstrings.aspx

答案 5 :(得分:0)

我的库Expansive以此为主要用例。

中等示例(使用AppSettings作为令牌扩展的默认来源)

在app.config中:

<configuration>
    <appSettings>
        <add key="Domain" value="mycompany.com"/>
        <add key="ServerName" value="db01.{Domain}"/>
    </appSettings>
    <connectionStrings>
        <add name="Default" connectionString="server={ServerName};uid=uid;pwd=pwd;Initial Catalog=master;" provider="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

对要扩展的字符串使用 .Expand()扩展方法:

var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
connectionString.Expand() // returns "server=db01.mycompany.com;uid=uid;pwd=pwd;Initial Catalog=master;"

按如下方式使用Dynamic ConfigurationManager包装器“ Config”(无需显式调用Expand()):

var serverName = Config.AppSettings.ServerName;
// returns "db01.mycompany.com"

var connectionString = Config.ConnectionStrings.Default;
// returns "server=db01.mycompany.com;uid=uid;pwd=pwd;Initial Catalog=master;"

高级示例1(使用AppSettings作为令牌扩展的默认源)

在app.config中:

<configuration>
    <appSettings>
        <add key="Environment" value="dev"/>
        <add key="Domain" value="mycompany.com"/>
        <add key="UserId" value="uid"/>
        <add key="Password" value="pwd"/>
        <add key="ServerName" value="db01-{Environment}.{Domain}"/>
        <add key="ReportPath" value="\\{ServerName}\SomeFileShare"/>
    </appSettings>
    <connectionStrings>
        <add name="Default" connectionString="server={ServerName};uid={UserId};pwd={Password};Initial Catalog=master;" provider="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

对要扩展的字符串使用.Expand()扩展方法:

var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
connectionString.Expand() // returns "server=db01-dev.mycompany.com;uid=uid;pwd=pwd;Initial Catalog=master;"