2012-07-25 67 views
3

運行時間在app.config文件的connectionString我已經創建了一個應用程序,該應用程序中我要插入,更新和數據庫更新在C#

我也創建了連接設置的形式刪除數據的操作,用戶可以在其中更新服務器名稱,數據庫和用戶標識和密碼。我已將連接字符串存儲在app.config文件中。

我的問題是,如何在運行時更新app.config文件中的連接字符串?

+0

可能的重複:https://stackoverflow.com/q/502411/1518546 – 2017-11-28 14:27:19

回答

0

你可以試試這個:

private void changeValue(String KeyName, String KeyValue) 
{ 
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

// Update the setting. 
config.AppSettings.Settings[KeyName].Value = KeyValue; 

// Save the configuration file. 
config.Save(ConfigurationSaveMode.Modified); 

// Force a reload of the changed section. 
ConfigurationManager.RefreshSection("appSettings"); 
} 
+0

謝謝你的回覆,但我不明白它應該寫在我的應用程序中.i在button_click事件中添加此代碼,但給我錯誤。錯誤是**名稱'ConfigurationUserLevel'在當前上下文中不存在**和許多其他 – user1482953 2012-07-25 11:45:29

+0

您是否將ConfigurationManager dll添加到項目中? – Mennan 2012-07-25 12:08:35

+0

謝謝先生,我的connectiostring正在更新,但關閉應用程序後,再次打開,我看到我的連接字符串它保持與更新之前相同。 – user1482953 2012-07-26 12:59:49

1

你可以試試這個:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings("MyConnectionString",String.Format("DataSource={0};InitialCatalog={1};IntegratedSecurity={2}","testing", "testing2", "Testing6"))); 
config.Save(ConfigurationSaveMode.Modified, true); 
ConfigurationManager.RefreshSection("connectionStrings"); 
+0

請注意,這將編輯bin文件夾中的配置文件 - 如果您正在使用多次嘗試,則可能需要使用其他方法 – Ruskin 2014-12-17 09:59:07

0

我相信,因爲它使用的是vshost您的App.Config中沒有更新。今天我遇到了這個問題,我嘗試了這篇文章的解決方案,但在VisualStudio上運行,所以文件是一樣的。在VS之外,它起到了魅力的作用。

0

App.cofig代碼

 <?xml version="1.0" encoding="utf-8"?> 
     <configuration> 
    <configSections> 
      <section name="dataConfiguration"type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=3.1.0.0, Culture=neutral,  PublicKeyToken=b03f5f7f11d50a3a" /> 
    </configSections> 
    <connectionStrings> 
    <add name="DbDatabase" providerName="System.Data.SqlClient" connectionString=""/> 
</connectionStrings> 

C#代碼

public void updateConfigFile(string con) 
    { 
     //updating config file 
     XmlDocument XmlDoc = new XmlDocument(); 
     //Loading the Config file 
     XmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 
     // XmlDoc.Load("App.config"); 
     foreach (XmlElement xElement in XmlDoc.DocumentElement) 
     { 
      if (xElement.Name == "connectionStrings") 
      { 
       //setting the coonection string 
       xElement.FirstChild.Attributes[2].Value = con; 
      } 
     } 
     //writing the connection string in config file 
     XmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 
     //XmlDoc.Save("App.config"); 
    } 



private void btn_Connect_Click(object sender, EventArgs e) 
    { 
     StringBuilder Con = new StringBuilder("Data Source="); 
     Con.Append(txt_ServerName.Text); 
     Con.Append(";Initial Catalog="); 
     Con.Append(txt_DatabaseName.Text); 
     if (String.IsNullOrEmpty(txt_UserId.Text) &&String.IsNullOrEmpty(txt_Password.Text)) 
      Con.Append(";Integrated Security=true;"); 
     else 
     { 
      Con.Append(";User Id="); 
      Con.Append(txt_UserId.Text); 
      Con.Append(";Password="); 
      Con.Append(txt_Password.Text); 
     } 
     string strCon = Con.ToString(); 
     updateConfigFile(strCon); 

     DatabaseTableDA da = new DatabaseTableDA(); 
     tableList = da.Select_Tables(); 
     this.lstTables.DataSource = tableList; 
    } 
0
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
connectionStringsSection.ConnectionStrings["ClientCN"].ConnectionString = "server=localhost;user=root;port=3306;password=abc"; 
config.Save(); 
    ConfigurationManager.RefreshSection("connectionStrings"); 
0

試試這個:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
connectionStringsSection.ConnectionStrings["ClientCN"].ConnectionString = "server=localhost;user=root;port=3306;password=abc"; 
config.Save(); 
ConfigurationManager.RefreshSection("connectionStrings");