Где Android хранит версию базы данных SQLite?


88

Я не могу найти, где Android хранит версию базы данных в файле базы данных SQLite. Где именно хранится версия базы данных?

Ответы:


187

Вы можете прочитать версию, используя android.database.sqlite.SQLiteDatabase.getVersion().

Внутренне этот метод выполняет оператор SQL " PRAGMA user_version". Я получил это из исходного кода Android .

В файле базы данных версия хранится со смещением байта 60 в заголовке базы данных файла базы данных в поле «cookie пользователя».


это было полезно, но мой вопрос в том, где эта информация о версии хранится в файловой системе (или может быть в файле базы данных)?
bhups

3
А чтобы прочитать и изменить его stackoverflow.com/questions/8030779/…
Ярослав Мыткалык

как версия базы данных сохраняется в файле базы данных?
xuehui

@xuehui см. ответ: байт 60 в файле базы данных.
Thomas Mueller

8

Если кто-то ищет java-код для чтения версии из файла:

private static int getDbVersionFromFile(File file) throws Exception
{
    RandomAccessFile fp = new RandomAccessFile(file,"r");
    fp.seek(60);
    byte[] buff = new byte[4];
    fp.read(buff, 0, 4);
    return ByteBuffer.wrap(buff).getInt();
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.