運行時間在app.config文件的connectionString我已經創建了一個應用程序,該應用程序中我要插入,更新和數據庫更新在C#
我也創建了連接設置的形式刪除數據的操作,用戶可以在其中更新服務器名稱,數據庫和用戶標識和密碼。我已將連接字符串存儲在app.config文件中。
我的問題是,如何在運行時更新app.config文件中的連接字符串?
運行時間在app.config文件的connectionString我已經創建了一個應用程序,該應用程序中我要插入,更新和數據庫更新在C#
我也創建了連接設置的形式刪除數據的操作,用戶可以在其中更新服務器名稱,數據庫和用戶標識和密碼。我已將連接字符串存儲在app.config文件中。
我的問題是,如何在運行時更新app.config文件中的連接字符串?
你可以試試這個:
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");
}
謝謝你的回覆,但我不明白它應該寫在我的應用程序中.i在button_click事件中添加此代碼,但給我錯誤。錯誤是**名稱'ConfigurationUserLevel'在當前上下文中不存在**和許多其他 – user1482953 2012-07-25 11:45:29
您是否將ConfigurationManager dll添加到項目中? – Mennan 2012-07-25 12:08:35
謝謝先生,我的connectiostring正在更新,但關閉應用程序後,再次打開,我看到我的連接字符串它保持與更新之前相同。 – user1482953 2012-07-26 12:59:49
你可以試試這個:
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");
請注意,這將編輯bin文件夾中的配置文件 - 如果您正在使用多次嘗試,則可能需要使用其他方法 – Ruskin 2014-12-17 09:59:07
我相信,因爲它使用的是vshost您的App.Config中沒有更新。今天我遇到了這個問題,我嘗試了這篇文章的解決方案,但在VisualStudio上運行,所以文件是一樣的。在VS之外,它起到了魅力的作用。
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;
}
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");
試試這個:
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");
可能的重複:https://stackoverflow.com/q/502411/1518546 – 2017-11-28 14:27:19