Подскажите, возможно ли, чтобы после обновления программы настройки приложения не затирались. В моем случае после запуска приложения происходит подключение к базе данных путем выгрузки ConnectionString'a
из XML файла. После первого запуска пользователь вводит все данные для подключения, подключение успешно. После обновления программы настройки слетают и снова нужно заново вводить все данные. Как можно сделать чтобы они сохранялись?
Класс, который хранит данные для подключения и методы сохранения\загрузки
[Serializable]
public class ConnectionString
{
public string UserId { get; set; }
public string Host { get; set; }
public string Database { get; set; }
public string PWD { get; set; }
public string TypeDb { get; set; }
public string СurrentUser { get; set; }
public string LastId { get; set; }
public ConnectionString() { }
public ConnectionString(string userId, string host, string database, string pwd, string typedb, string currentuser, string lastid)
{
UserId = userId;
Host = host;
Database = database;
PWD = pwd;
TypeDb = typedb;
СurrentUser = currentuser;
LastId = lastid;
}
public override string ToString()
{
return this.TypeDb;
}
//Сохранение данных для Connection String'a в файл
public ConnectionString LoadFile(string path)
{
try
{
ConnectionString result;
XmlSerializer formatter = new XmlSerializer(typeof(ConnectionString));
using (var fs = new FileStream("DataConnection.xml", FileMode.Open))
{
result = (ConnectionString)formatter.Deserialize(fs);
}
return result;
}
catch
{
throw new Exception("File not uploaded!");
}
}
//Загрузка данных для Connection String'a с файла
public void SaveFile(object obj, string path)
{
try
{
XmlSerializer formatter = new XmlSerializer(obj.GetType());
using (var fs = new FileStream("DataConnection.xml", FileMode.Create))
{
formatter.Serialize(fs, obj);
}
}
catch
{
throw new Exception("File not saved!");
}
}
Так подключаемся к базе
private void ConnectionToBD()
{
try
{
ConnectionString cs = new ConnectionString();
var loadData = cs.LoadFile("DataConnection.xml");
string connString = String.Format("Data Source={0};Initial Catalog={1};User Id={2};Password={3}", loadData.Host, loadData.Database, loadData.UserId, loadData.PWD);
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
}
}
catch
{
MessageBox.Show("Ошибка");
FormConnection formConnection = new FormConnection();
formConnection.ShowDialog();
}
}
если подключение отсутствует, вызывается форма для ввода данных
Могу предложить следующий алгоритм действий:
Добавление файла c настройками в проект
Выберите файл в обозревателе решений. В окне «Свойства» измените свойство «Действие при сборке» на значение «Содержимое».Инструкция MSDN
В разделе «Публикация» -> «Файлы приложения» поставьте галочку "Показать все файлы" и включите файл в публикацию.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как проще и красивей записать следующий код :