Добрый день!
Когда начал писать проект, думал ограничусь парой подключений к БД SQLite - загрузить и сохранить настройки, поэтому писал подключение и закрытие соединения упрощенно, прямо в методах. Затем проект разрастался и я думал "Ну ладно, еще один метод, не переписывать же из-за него..." ))
Но таких "ну еще один" методов оказались в результате десятки в одном классе, в результате они, похоже, мешают друг другу при работе и все-таки придется переписывать.))
Вчера прозвенел первый звоночек - проект подвис и выдал ошибку "The database file is locked" на очередном методе.
Я обернул обращение к БД в Invoke и все заработало. Сегодня добавились еще несколько методов и на каждом из них выдается та же ошибка.
Методы выглядят примерно так:
private void clearActive()
{
try
{
path = Application.dataPath + "/StreamingAssets/db.bytes";
scriptConnection.dbconnection = new SqliteConnection("URI=file:" + path);
scriptConnection.dbconnection.Open();
if (scriptConnection.dbconnection.State == ConnectionState.Open)
{
scriptConnection.cmd = new SqliteCommand();
scriptConnection.cmd.Connection = scriptConnection.dbconnection;
scriptConnection.cmd.CommandText = "UPDATE progress SET active = 0 WHERE active = 1";
scriptConnection.cmd.ExecuteNonQuery();
scriptConnection.dbconnection.Close();
}
else
{
Debug.Log("Error connection");
}
}
catch (Exception ex)
{
Debug.Log(ex);
}
}
Собственно вопрос, как это лучше всего оптимизировать? Подключение вынести в отдельный статический класс (не пробовал пока так сделать)? Может еще что-то?