【问题标题】:Configure the app.config dynamically in C# to connect to other database [duplicate]在 C# 中动态配置 app.config 以连接到其他数据库 [重复]
【发布时间】:2012-04-14 10:02:50
【问题描述】:

可能重复:
VS2005 C# Programmatically change connection string contained in app.config

我已经使用 C# 在我的 PC 中创建了一个 WinForms 项目,并且想将该项目部署到其他 PC,但是我需要更改 app.config 中的连接字符串才能连接其他 PC 中的 sql sever 数据库,并且我希望用户配置连接字符串。

我怎样才能做到这一点?

【问题讨论】:

  • 机器上的不同数据库是否有模式?
  • 数据库是sqlserver 2008 express edition,将运行在瘦客户端服务器上,我想将我编写的应用程序部署到服务器上,这样每个瘦客户端都可以使用与数据库交互的应用程序,但我想让用户配置应用程序和数据库之间的连接

标签: c# winforms configuration


【解决方案1】:

如果您已为项目创建了设置文件,则会有一个以类型安全的方式表示属性的类。这通常类似于 TiddleBits.Properties.Settings.Default,其中 TwiddleBits 是您的程序集名称。

如果您尚未为项目创建设置文件,请执行此操作。它极大地简化了配置文件的使用。

一旦类存在,您就可以像任何其他类一样读写属性。请记住在完成分配属性后保存更改,否则它们将被丢弃。

【讨论】:

    【解决方案2】:

    您可以告诉用户编辑 app.config,也可以提供 UI 并使用 ConfigurationManager 在运行时编辑 app.config。

    Edit app config at runtime

    Update app.config system.net setting at runtime

    【讨论】:

      【解决方案3】:

      就像其他人所说的那样,创建自己的配置文件是要走的路。下面是一些可能有帮助的代码

      只需在VS中创建一个app.config文件,放在与dll相同的目录下即可。它看起来像这样。

          <?xml version="1.0" encoding="utf-8" ?>
            <configuration>
             <appSettings>
              <add key="YourThing" value="Something" />
             </appSettings>
          </configuration>
      

      然后你可以像这样加载它。

      string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
      
              string configFile = System.IO.Path.Combine(appPath, "App.config");
              ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
              configFileMap.ExeConfigFilename = configFile;
      
              System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
      

      然后您可以读取这样的值。

      config.AppSettings.Settings["YourThing"].Value;
      

      并像这样保存值。

      config.AppSettings.Settings["YourThing"].Value = "New Value";
      config.Save();
      

      【讨论】:

        【解决方案4】:
        猜你喜欢
        • 2021-04-30
        • 1970-01-01
        • 2018-12-07
        • 2013-06-28
        • 1970-01-01
        • 2019-01-21
        • 2012-10-03
        • 2017-12-30
        • 1970-01-01
        相关资源
        最近更新 更多