SQLITE с Android (лучшая методология для настройки базы данных) - PullRequest
2 голосов
/ 29 декабря 2011

Я видел несколько разных способов использования SQLite в качестве базы данных для вашего приложения.Они следующие:

  • База данных создана и данные импортированы через XML-файл.
  • Использование SQLite GUI (Браузер базы данных SQLite)
  • Прямая база данныхсоздание с помощью вспомогательного класса Database.

Каковы преимущества каждого из них?Я склоняюсь к использованию браузера базы данных SQLite для загрузки нескольких таблиц, которые мне понадобятся для моего приложения.Я также буду иметь пользовательский ввод.

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

Спасибо!

1 Ответ

3 голосов
/ 29 декабря 2011

Один вариант, который я сделал:

  • Хранить каждый из файлов схемы и данных в виде сценариев в ресурсах.
  • Создан класс-оболочка, который запускает эти сценарии из ресурсов
  • Один из файлов ресурсов - это хорошо известный (по имени) манифест, в котором есть список сценариев, запускаемых в каком порядке.
  • У меня есть таблица 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 ...

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