Как определить общее свойство для всей базы данных - PullRequest
0 голосов
/ 02 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Возможно ли это?

Да и часто используется.

Android SQLiteOpenHelper класс (который вы можетеподкласс к) проверяет версию, переданную против сохраненной версии.

Если переданная версия выше сохраненной версии, вызывается метод (аннотация, поэтому он должен быть переопределен) onUpgrade.

Если версия ниже, то метод onDowngrade (не абстрактный, но не переопределенный, приводит к исключению).

Значение сохраняется в user_version (смещение 60-63 включительно, в заголовке базы данных (первая часть файла базы данных) и представляет собой 32-разрядное целое число со знаком.

Его можно прочитать, введя PRAGMA user_version, а затем извлечь из результирующего набора в виде столбца user_version .

Его можно установить, введя PRAGMA user_version = ? (где?это число, которое вы хотите установить в).

Максимальное значение, которое может быть установлено, равно 2147483647, минимальное значение -2147483648 вне этого диапазона приводит к 0.

PRAGMA user_version;

Например: -

PRAGMA user_version = -2147483648;
PRAGMA user_version;
PRAGMA user_version = 2147483647;
PRAGMA user_version;

приведет к двум запросам на возврат user_version (2-я и 4-я строки) согласно: -

enter image description here

и

enter image description here

Следующие 4 байта в заголовке application_idможет быть использован аналогичным образом.Он предназначен для описания типа файла, похожего на расширение файла, например .doc, .pdf и т. Д., И используется, когда Sqlite используется в качестве формата файла приложения.Это значение запрашивается приложением, которое затем выполняет соответствующие операции чтения, сохранения и извлечения данных.

Вероятно, это не часто используемое значение, поэтому его также можно использовать одинаково только с разными PRAGMA.PRAGMA application_id и PRAGMA application_id = ? (опять где? - 32-битное целое число со знаком)

PRAGMA application_id;

SQLite как формат файла приложения

SQLite как формат файла приложения - Преимущества (короткая версия)

Формат файла базы данных - Заголовок базы данных

0 голосов
/ 02 декабря 2018

Если все, что вам нужно, это отслеживать версию приложения, у Sqlite есть пара прагм для запроса и установки целочисленных значений, которые являются частью самого формата файла базы данных, предназначенных именно для этого.

  • APPLICATION_ID : Этот номер предназначен для назначения идентификационного номера приложения, который можно проверить, чтобы убедиться, что база данных создана вашей программой, а не чем-то другим.

  • USER_VERSION : Это, вероятно, то, что вы хотите использовать.Я использую его для той же цели, которую вы описываете, увеличивая ее с каждой новой таблицей или чем-то еще, так что если база данных со старой версией схемы загружается в программу, которая использует более новую, она может затем обновить базу данных соответствующим образом.

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