#android #sqlite
#Android #sqlite
Вопрос:
В моей базе данных sqlite3 у меня есть несколько таблиц с добавленными пользователем значениями, которые я хотел бы сохранить при обновлении своего приложения. Тем не менее, я хотел бы удалить большинство других таблиц (около 10) и повторно заполнить их данными из новой базы данных, которую я собираюсь отправить. В предыдущих версиях я мог просто удалить базу данных и скопировать новую. В дальнейшем это будет невозможно, потому что я собираюсь разрешить пользователям вводить данные в отдельные таблицы.
Ответ №1:
Вместо удаления всей базы данных и повторного заполнения с нуля рассмотрите возможность использования DROP TABLE явно. Здоровая доза ALTER TABLE.. ПЕРЕИМЕНОВАНИЕ также может быть для того, чтобы поместить «новые» таблицы туда, где были «старые» таблицы. И, возможно, очистка с помощью VACUUM в конце, чтобы поддерживать порядок.
Если новые данные распространяются в новом файле базы данных, то рассмотрите возможность временного использования ПРИКРЕПЛЕНИЯ базы ДАННЫХ для операции копирования.
В моих базах данных у меня есть таблица метаданных, в которой, помимо прочего, хранится «версия базы данных» (хотя также можно использовать USER_VERSION PRAGMA). Это позволяет коду выборочно выполнять откат через наборы изменений.
Удачного кодирования.
Комментарии:
1. Итак, я могу присоединить новую базу данных, которую я отправляю, к существующей базе данных, чтобы я мог выбрать / вставить несколько тысяч строк, которые я хочу повторно вставить в существующую базу данных? Я не думаю, что видел, как это делается.