System.IO.IOException: "The process cannot access the file 'D:\rss8.db' because it is being used by another process." При создании архива
При попытке добавить файл БД 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?
Ответы (1 шт):
Автор решения: Віктор
→ Ссылка
Всем огромное спасибо. Решение вышло комплексным.
Библиотека:
using Microsoft.Data.Sqlite;
К имени БД добавить : ";Pooling=False" :
filedb = "Data Source=" + "maindb.db" + ";Pooling=False";
И еще файл e_sqlite3.dll скопировать в папку, ..\bin\Debug