Сначала вы можете добавить
using System.Configuration;
В ваш файл .cs. Если он недоступен, добавьте его через ссылки на проект, поскольку он по умолчанию не включен в новый проект.
Это мое решение этой проблемы. Сначала я создал класс ConnectionProperties, который сохраняет элементы, которые мне нужно изменить, в исходной строке подключения. Важно, чтобы переменная _name в классе ConnectionProperties была именем строки подключения. Первый метод принимает строку подключения и изменяет нужный параметр новым значением.
private String changeConnStringItem(string connString,string option, string value)
{
String[] conItems = connString.Split(';');
String result = "";
foreach (String item in conItems)
{
if (item.StartsWith(option))
{
result += option + "=" + value + ";";
}
else
{
result += item + ";";
}
}
return result;
}
Вы можете изменить этот метод в соответствии с вашими потребностями. У меня есть соединения mysql и mssql, поэтому мне нужны они оба. Конечно, вы можете доработать этот черновой код для себя.
private void changeConnectionSettings(ConnectionProperties cp)
{
var cnSection = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
String connString = cnSection.ConnectionStrings.ConnectionStrings[cp.Name].ConnectionString;
connString = changeConnStringItem(connString, "provider connection string=\"data source", cp.DataSource);
connString = changeConnStringItem(connString, "provider connection string=\"server", cp.DataSource);
connString = changeConnStringItem(connString, "user id", cp.Username);
connString = changeConnStringItem(connString, "password", cp.Password);
connString = changeConnStringItem(connString, "initial catalog", cp.InitCatalogue);
connString = changeConnStringItem(connString, "database", cp.InitCatalogue);
cnSection.ConnectionStrings.ConnectionStrings[cp.Name].ConnectionString = connString;
cnSection.Save();
ConfigurationManager.RefreshSection("connectionStrings");
}
Поскольку я не хотел добавлять тривиальную информацию, я пропустил область свойств своего кода. Пожалуйста, добавьте его, если хотите, чтобы это работало.
class ConnectionProperties
{
private String _name;
private String _dataSource;
private String _username;
private String _password;
private String _initCatalogue;
/// <summary>
/// Basic Connection Properties constructor
/// </summary>
public ConnectionProperties()
{
}
/// <summary>
/// Constructor with the needed settings
/// </summary>
/// <param name="name">The name identifier of the connection</param>
/// <param name="dataSource">The url where we connect</param>
/// <param name="username">Username for connection</param>
/// <param name="password">Password for connection</param>
/// <param name="initCat">Initial catalogue</param>
public ConnectionProperties(String name,String dataSource, String username, String password, String initCat)
{
_name = name;
_dataSource = dataSource;
_username = username;
_password = password;
_initCatalogue = initCat;
}
// Enter corresponding Properties here for access to private variables
}
person
Athanasios Kataras
schedule
25.02.2013