System.IO.IOException: "The process cannot access the file 'D:\rss8.db' because it is being used by another process." При создании архива

Рейтинг: 0Ответов: 1Опубликовано: 27.07.2025

При попытке добавить файл БД SQLite в архив выпадает ошибка. на строке :

archive.CreateEntryFromFile(filebd, fila);

Типа файл уже чемто открыт. По логике програмы архивирование самое первое что запускается. Уже специально добавил выше открыть и закрыть файл, толку 0.

Вот кусок кода:

           string filedbin = filebd;
           filedbin = "Data Source=" + filedbin;
           using (var connection = new SQLiteConnection(filedbin))
           {
               connection.Open();

               string sqltext = "SELECT * FROM info";
               SQLiteCommand command1 = new SQLiteCommand(sqltext, connection);
               using (SQLiteDataReader reader = command1.ExecuteReader())
               {
                   if (reader.HasRows)
                   {

                       while (reader.Read())
                       {
                        }
                   }
               }
               
           }
          
           using (FileStream zipToCreate = new FileStream(filestrend, FileMode.Create))
           {
               using (ZipArchive archive = new ZipArchive(zipToCreate, ZipArchiveMode.Create))
               {

                   archive.CreateEntryFromFile(filebd, fila);
               }
           }

Пробовал паузу ставить перед архивацией, не помогло. Може есть варианты архивации не через System.IO?

Ответы

▲ 0

Всем огромное спасибо. Решение вышло комплексным.

Библиотека:

using Microsoft.Data.Sqlite;

К имени БД добавить : ";Pooling=False" :

filedb = "Data Source=" + "maindb.db" + ";Pooling=False";

И еще файл e_sqlite3.dll скопировать в папку, ..\bin\Debug