I am making a program and i want for the user to be able to connect it to several Databases(SQL or MySQL) dynamically as he/she uses it. So i need to be able to Create Read Update and Delete connection strings (into the app.config ???) and make those changes persistent.
Till now i am able to do most of these things but they are not persistent.Here is some of my code.
public static class CnnHelper
{
public static string ReadCnn(string name)
{
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
public static void UpdateCnn(string name,string cnn)
{
ConfigurationManager.ConnectionStrings[name].ConnectionString = cnn;
}
public static void InsertCnn(string name, string connectionstring)
{
RemoveReadOnly();
ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings(name, connectionstring));
AddReadOnly();
}
public static List<string> GetAllCnnNames()
{
return ConfigurationManager.ConnectionStrings
.Cast<ConnectionStringSettings>()
.Select(v => v.Name)
.ToList();
}
private static void RemoveReadOnly()
{
typeof(ConfigurationElementCollection)
.GetField("bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic)
.SetValue(ConfigurationManager.ConnectionStrings, false);
//ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings());
}
private static void AddReadOnly()
{
typeof(ConfigurationElementCollection)
.GetField("bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic)
.SetValue(ConfigurationManager.ConnectionStrings, true);
//ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings());
}
}
Why it doesn't keep the changes ?
How i can do this?