Сохранение некоторых таблиц при обновлении базы данных приложения?

#android #sqlite

#Android #sqlite

Вопрос:

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

Ответ №1:

Вместо удаления всей базы данных и повторного заполнения с нуля рассмотрите возможность использования DROP TABLE явно. Здоровая доза ALTER TABLE.. ПЕРЕИМЕНОВАНИЕ также может быть для того, чтобы поместить «новые» таблицы туда, где были «старые» таблицы. И, возможно, очистка с помощью VACUUM в конце, чтобы поддерживать порядок.

Если новые данные распространяются в новом файле базы данных, то рассмотрите возможность временного использования ПРИКРЕПЛЕНИЯ базы ДАННЫХ для операции копирования.

В моих базах данных у меня есть таблица метаданных, в которой, помимо прочего, хранится «версия базы данных» (хотя также можно использовать USER_VERSION PRAGMA). Это позволяет коду выборочно выполнять откат через наборы изменений.

Удачного кодирования.

Комментарии:

1. Итак, я могу присоединить новую базу данных, которую я отправляю, к существующей базе данных, чтобы я мог выбрать / вставить несколько тысяч строк, которые я хочу повторно вставить в существующую базу данных? Я не думаю, что видел, как это делается.