Ситуация:
В настоящее время я отлаживаю код моего предшественника, который обрабатывает базы данных sqlite (формат файла .db3).В программное обеспечение вы можете загрузить одну или несколько баз данных.Общая информация (получение всех имен таблиц, получение всех имен столбцов и т. Д.) В этих базах данных обрабатывается непосредственно из файлов, но для фактической информации о данных базы данных копируются в базу данных в памяти, откуда запрашиваются данные.Таким образом, после того, как начальная информация собрана и все данные сохранены в базе данных памяти, фактические файлы больше не используются.
Однако они по-прежнему представлены в графическом интерфейсе и имеют ссылки, если пользователь добавляет / удаляет базы данных из списка.
Проблема:
Все это приводит к следующей проблеме: если пользователь изменяет / удаляет файл загруженной базы данных (что возможно, потому что мы нене имеет открытого подключения к файлам), внутренний пул базы данных программного обеспечения отличается от фактического списка файлов.В результате мы имеем неопределенное поведение в таком случае, как только список используемых баз данных обновляется.
возможные решения (?)
- Вероятно, лучшее, что можно сделать, это переработать весь код и сохранить все в базе данных памяти (GUI)представление, данные, информация о базе данных, ...).В этом случае мне не нужно беспокоиться о файлах вообще.Однако это будет означать серьезную переделку и ... нет времени для этого ^^
- Просто откройте sqlite-соединения со всеми файлами и оставьте их открытыми, если соответствующая база данных в памяти указана как 'используется »(не очень хороший вариант, на мой взгляд).
- Найдите способ предотвратить удаление / изменение файлов без их открытия.Я не уверен, если / как это было бы возможно, то, что я прочитал до сих пор, - это то, что нужно для программного изменения прав доступа к файлам, что приводит к нескольким проблемам, касающимся прав пользователя в Windows ...
Вопрос: Есть ли другой способ / предложение по этому вопросу?Для меня лучший / самый простой подход - найти способ просто предотвратить изменение списка файлов.Пока что я не нашел хорошего решения для этого подхода.