Намеренно удаляю базу данных, делаю запрос и обрабатываю ошибки, и остается от БД
Как удалять этот файл?
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;
}
Не забываем что желательно прога должна запускаться от имени админа компа, если какие-то хитрые настройки доступа в операционной системе!
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Объясните, что в данном примере обозначает параметр <T>, и в чем будет коренная разница от реализации данной ниже?
При запуске команды update-database происходит ошибка:
Есть 3 таблицы (CAT_OBL, CAT_STATION, TOS_MES), 1-я и 2-я связаны между собой по полю OBL_ID, 2-я и 3-я таблицы связанны по полю IND_STНужно вывести данные из 3-й таблицы...
Подскажите, как в панели (5 версия) установить gmpobject, strlen, sprintf, ip2long, serialize, unserialize, crypt, parse_str, json_encode, strtr, strstr, round, parse_url, simplexml_load_string, array_search ? Есть...