Не могу переименовать файл базы данных SQLite после его использования - PullRequest
1 голос
/ 08 января 2010

Я пытаюсь переименовать файл базы данных SQLite после того, как я его использую, однако файл по-прежнему открывается SQLite даже после того, как все мои соединения закрыты.

Вот пример того, что я делаю:

using (DbConnection conn = new SQLiteConnection("Data Source=test.db"))
{
    conn.Open();
    DbCommand command = conn.CreateCommand();
    command.CommandText = "select id from test";
    command.ExecuteScalar();
}
File.Move("test.db", "test.db.test");

Вызов Move вызывает IOException. Это единственное соединение, которое я имею к этому файлу базы данных. После завершения приложения я могу переместить файл вручную без проблем. Я пробовал разные вещи, такие как явная установка Pooling=false в строке подключения, ручной вызов Close перед удалением соединения, явный запуск и фиксация транзакции, но, похоже, ничего из этого не помогло. Есть ли способ заставить SQLite закрыть / освободить файл базы данных, не выходя из приложения?

Ответы [ 2 ]

0 голосов
/ 08 января 2010

DBCommand - это IDisposable. Возможно, вам нужно вызвать Dispose или создать его в выражении using.

0 голосов
/ 08 января 2010

Я предполагаю, что вы используете SQLite.Net ? Я только что попробовал ваш код и без проблем работает с SQLite.Net 1.0.65, в VS 2005 на Vista.

...