Намеренно удаляю базу данных, делаю запрос и обрабатываю ошибки, и остается от БД
Как удалять этот файл?
protected bool Delete() {
using(var connection = new SQLiteConnection(Globals.connection)) {
try {
connection.Open();
}
catch(SQLiteException) {
connection.Close();
return false;
}
using(var command = new SQLiteCommand("DELETE FROM system_events", connection)) {
try {
if(command.ExecuteNonQuery() == 0) {
connection.Close();
try {
File.Delete(Directory.GetCurrentDirectory() + "\\db\\db.db");
} catch (Exception) {
}
return false;
}
} catch(SQLiteException) {
connection.Close();
try {
File.Delete(Directory.GetCurrentDirectory() + "\\db\\db.db");
} catch (Exception) {
}
return false;
}
}
connection.Close();
}
return true;
}
Команда DELETE удаляет данные, но не саму базу данных.
Окроме того это нормально что остается пустой файл размером в 0 байт. Это то же самое, что создать пустой текстовый документ, сохранить там 0 символов и жаловаться что операционка не удалила сам файл, хотя он, вроде как, пустой и должен удалиться...
Сам файл БД при удалении данных из БД удалятся НЕ ДОЛЖЕН даже в теории.
Раз уж ты имеешь желание удалить сам файл базы данных, то нужно использовать File.Delete(@"\db\db.db"); -- то есть банальное удаление файла через файловую систему операционки.
UnauthorizedAccessException может возникать в случаях:
Пример кода:
protected bool Delete() {
//Пытаемся отключить конекшн к БД если он открыт.
try {
_connection.Close(); //_connection -- глобальная переменная класса. Эта переменная должна использоваться и в других местах! И открываться конекшн должен только из одного места. НЕ НУЖНО ПЛОДИТЬ ПОДКЛЮЧЕНИЯ К БД
catch(SQLiteException) {
//Ошибка здесь не важна. Если он закрыт, значит уже прекрасно!
}
try {
//Наш коннекшн закрыт. Можем смело удалять сам файл.
File.Delete(Directory.GetCurrentDirectory() + "\\db\\db.db");
return true;//Ура! Нам удалось удалить файл!
} catch (Exception) {
}
//Во всех иных случаях мы потерпели неудачу
return false;
}
Не забываем что желательно прога должна запускаться от имени админа компа, если какие-то хитрые настройки доступа в операционной системе!
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости