Один вариант, который я сделал:
- Хранить каждый из файлов схемы и данных в виде сценариев в ресурсах.
- Создан класс-оболочка, который запускает эти сценарии из ресурсов
- Один из файлов ресурсов - это хорошо известный (по имени) манифест, в котором есть список сценариев, запускаемых в каком порядке.
- У меня есть таблица poperties в базе данных, в которой хранится последний запущенный скрипт.
Это значит:
- При создании (первый запуск) - последовательно запускаются все сценарии
- Когда приложение обновляется - оно запускает все сценарии, которые еще не запускались. Обновление содержит больше сценариев в ресурсах.
Скрипты обновляют схему и модифицируют / изменяют существующие данные клиентов - конечно, без потери данных.
Кстати, я сделал это на iOS с целью обмена этими sqlite-скриптами между android, winphone и другими платформами. Вам просто нужен класс-оболочка на каждой платформе, которая запускает последовательности.
Это также означает, что я могу запускать скрипты по порядку из cmdline для создания БД, если это необходимо ...
EDIT:
Например, в моем примере приложения Update1.sql - это файл, добавленный в качестве ресурса. В нем две партии sql. Моя оболочка открывает файл манифеста, получает список запускаемых сценариев, запрашивает базу данных, чтобы увидеть последний запущенный сценарий, а затем создает массив сценариев для запуска. Когда он запускает Update1.sql, который находится в списке, мой класс-оболочка выполняет все операторы в этом файле, которые встроены в качестве ресурса. Например, вот мой Update1.sql
alter table messages add column user text;
create table log
(
id integer primary key autoincrement,
information text
);
Теперь, скажем, созданная новая таблица нуждается в некоторых данных. (в моем случае это не таблица журналов). Эти сценарии могут содержать серию вставок в операторы сразу после таблицы создания.
Выполнение нескольких пакетов в скрипте требует использования аргумента tail в prepare. У меня есть код C /jective-C, если вы хотите его увидеть, но я еще не написал обертку для Android ...