【问题标题】:How to declare a variable in the app.config file?如何在 app.config 文件中声明变量?
【发布时间】:2011-05-05 00:05:42
【问题描述】:

我正在开发一个 Windows 应用程序。 我有一个带有标签的表单

HOST:
UserName:
Password:

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

我使用的是 SQL Server 2008 和 Visual C# 2008 Express Edition。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    当我阅读您的问题时,您希望有一个通用连接字符串,您希望将用户名/密码变量注入其中。为此,您需要具有以下格式的密钥:

    <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 这也是我对这个问题的解释——也许 OP 可以确认。
    【解决方案2】:

    app.config 文件中有一个&lt;connectionString&gt; 部分。

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

    对于您的主机、用户 ID 和密码,您可以在 &lt;appSettings&gt; 部分中定义这些。

    【讨论】:

      【解决方案3】:

      试试这个

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

      欲了解更多信息,请尝试Connection Strings

      【讨论】:

        【解决方案4】:

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

        在您的代码中,获取值:

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

        请注意,您不能更改应用程序设置代码中的值。

        编辑:

        另外,还可以设置connectionStrings 节点(但必须在 app.config 文件本身中完成。有关documentation,请参阅 MSDN。

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

          你可以这样做,

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

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

          【讨论】:

            【解决方案6】:

            我的库 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;"
            

            【讨论】:

              猜你喜欢
              • 2011-05-14
              • 2017-05-07
              • 2010-10-30
              • 2017-07-12
              • 2012-11-14
              • 2020-09-17
              • 1970-01-01
              • 1970-01-01
              • 2020-11-18
              相关资源
              最近更新 更多