Где хранить файл базы данных SQLite? - PullRequest
1 голос
/ 23 января 2012

У меня есть файл базы данных SQlite с записями, который поставляется с моим приложением.Я просто использовал файл, который добавил в свой проект, чтобы сделать свои операторы INSERT и UPDATE.После загрузки его на мое тестовое устройство я получил исключение, что файл доступен только для чтения.После небольшого исследования я обнаружил, что мне нужно скопировать файл db в каталог пользователей, чтобы сделать вставку.Это работает на данный момент.Но у меня есть вопросы об этом, на которые я не получил ответа через Google:

Где я должен поставить свой процесс копирования?Я реализовал это в AppDelegates FinishedLaunching, где я проверяю, существует ли он уже.

Куда скопировать файл?Я использовал папку MyDocuments на данный момент, это нормально?

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

Когда пользователь решает удалить приложение с устройства,Файл базы данных тоже будет удален?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Где я должен поставить свой процесс копирования?Я реализовал это в AppDelegates FinishedLaunching, где я проверяю, существует ли он уже.

Это действительно зависит, но с моей точки зрения FinishedLaunching в порядке.

Где следуетЯ копирую файл в?Я использовал папку MyDocuments сейчас, это нормально?

Я не уверен, что вы подразумеваете под папкой "MyDocuments".Каждое приложение имеет отдельный каталог документов.Вот где вы должны его скопировать.

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

Нет, они запускаются в «песочнице» (если толькоустройство взломано)

Когда пользователь решает удалить приложение с устройства.Будет ли удален файл базы данных?

Да, так как будет удален весь каталог документов.

1 голос
/ 23 января 2012

Где я должен поставить свой процесс копирования?Я реализовал это в AppDelegates FinishedLaunching

Имейте в виду, что у вас есть ограниченное количество времени для завершения FinishedLaunching выполнения (около 15 секунд) до того, как сторожевой таймер iOS убьет ваше приложение.

В зависимости от размера вашей базы данных, скорости устройства и другой обработки, которую вам необходимо выполнить, вы можете рассмотреть возможность проверки только того, существует ли она (что должно быть быстрым), а затем выполнить копирование (если требуется).) из другого потока.

Я сейчас использовал папку MyDocuments, это нормально?

Да, использование Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments) правильно.

Все остальное из ответа @Lightforce охватывает все остальное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...