【问题标题】:Change SQL Server Database Connection Dynamically动态更改 SQL Server 数据库连接
【发布时间】:2015-05-27 18:42:45
【问题描述】:

我有一个连接类,用于连接到我的数据库,每次我执行选择、插入等...语句时。我在课堂上硬编码了连接字符串。

问题是,如果我必须更改数据库服务器,那么我必须更改每个应用程序上的字符串,然后重新发布。

这是我的连接字符串:

var cnnString = string.Format("user id=sa;" +
                                          "password=pw;server=database\\instance;" +
                                          "database=dbase; " +
                                          "connection timeout=10");

我考虑过创建一个表并将数据库信息存储在其中,但如果无法使用连接类从数据库中进行选择,那将无济于事。

有没有办法动态地做到这一点?

【问题讨论】:

  • 尝试将数据库连接字符串放入Web.config文件并在你的代码中读取。
  • @VimalanJayaGanesh 有趣的想法,我将如何动态更新 web.config?
  • 为什么需要动态更新网络配置?您计划多久更换一次服务器?使用 Web 配置的优点是连接字符串信息是一个位置。然后,当您需要更改它时,您更改 Web 配置,您的所有代码都使用新信息。
  • @Steve 感谢您的链接!

标签: c# sql sql-server database connection-string


【解决方案1】:

将您的连接字符串放在 .config 文件中并使用 ConfigurationManager 类: https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager%28v=vs.110%29.aspx

将所有连接字符串加载到数组/字典中,然后在需要使用适当的连接字符串创建连接时。

【讨论】:

    【解决方案2】:

    您可以使用您的 Appconfig 文件

    <appSettings>    
        <add key="dbserver" value="IP_SERVER" />
        <add key="dbname" value="DB_NAME" />
        <add key="dbuser" value="sa" />
        <add key="dbpass" value="PASSWORD" />
     </appSettings>
    

    然后使用它来创建字符串连接

    string strConexion = "Data Source='" + ConfigurationManager.AppSettings["dbserver"] + "';" +
                                    "Initial Catalog='" + ConfigurationManager.AppSettings["dbname"] + "';" +
                                    "User Id='" + ConfigurationManager.AppSettings["dbuser"] + "';" +
                                    "Password='" + ConfigurationManager.AppSettings["dbpass"] + "';";
    

    您可以使用表单来更改配置值

    //打开可执行文件的App.Config

        System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    
            config.AppSettings.Settings.Remove("dbserver");
            config.AppSettings.Settings.Remove("dbname");
            config.AppSettings.Settings.Remove("dbuser");
            config.AppSettings.Settings.Remove("dbpass");
    
            // Add an Application Setting.
            config.AppSettings.Settings.Add("dbserver", txtDBServer.Text);
            config.AppSettings.Settings.Add("dbname", txtDBName.Text);
            config.AppSettings.Settings.Add("dbuser", txtDBUser.Text);
            config.AppSettings.Settings.Add("dbpass", txtDBPassword.Text);
    

    将更改保存在 App.config 文件中。

     config.Save(ConfigurationSaveMode.Modified);
    

    强制重新加载已更改的部分。

    ConfigurationManager.RefreshSection("appSettings");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2013-07-08
      • 2016-11-03
      相关资源
      最近更新 更多