Задать вопрос

Как закрыть соединение с БД SQLite?

Вот рабочий код
// Метод возвращает объект SqliteDataReader, содержащие данные, требуемые в запросе.
public static SqliteDataReader GetSqliteDataReader(string pathToBase, string sqlCommandText)
{
SqliteConnection connection = new SqliteConnection("Data Source="+pathToBase);
connection.Open();
SqliteCommand sqliteCommand = new SqliteCommand();
sqliteCommand.Connection = connection;
sqliteCommand.CommandText = sqlCommandText;
SqliteDataReader sqliteDataReader = sqliteCommand.ExecuteReader();
//connection.Close(); // Тут нельзя закрыть т.к. получим пустой sqliteDataReader
return sqliteDataReader;
//connection.Close(); // Тут не получится закрыть т.к. выше return - уже вышли из метода.
}


Пишу в Unity.
Насколько я знаю, C# сам удаляет мусор (там мы не удаляем объекты).
Возможно C# сам закрывает соединение? А как в Unity?
Как закрыть соединение с БД SQLite и нужно ли это делать?

PS
"Unity это C#?" - в плане того, что C# .NET (весь фреймворк) я могу использовать в Unity и это всё будет работать, скажем под андройд (где нет .NET)?
  • Вопрос задан
  • 566 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
Вычитай данные из SqliteDataReader и проблем с закрытием не будет.

Если не закроешь, то, конечно, рано или поздно сработает сборщик мусора и финализатор, но этот момент заранее не известен и пока он не произойдёт - ты не сможешь открыть базу второй раз.

Либо заверни его в какой-нибудь свой класс, который можно будет задиспозить потом
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
sqliteConnection.Close()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы