Onde o Android armazena a versão do banco de dados SQLite?

88

Não consigo encontrar onde o Android armazena a versão do banco de dados dentro do arquivo de banco de dados SQLite. Onde exatamente a versão do banco de dados está armazenada?

bhups
fonte

Respostas:

187

Você pode ler a versão usando android.database.sqlite.SQLiteDatabase.getVersion().

Internamente, este método executa a instrução SQL " PRAGMA user_version". Peguei isso no código-fonte do Android .

No arquivo de banco de dados, a versão é armazenada no deslocamento de byte 60 no cabeçalho do banco de dados do arquivo de banco de dados, no campo 'cookie do usuário'.

Thomas Mueller
fonte
isso foi útil, mas minha pergunta é onde essas informações de versão são armazenadas no sistema de arquivos (ou podem estar no arquivo de banco de dados)?
bhups de
3
E para ler e modificá-lo stackoverflow.com/questions/8030779/…
Yaroslav Mytkalyk
como a versão do banco de dados é persistida no arquivo de banco de dados?
xuehui
@xuehui veja a resposta: byte 60 no arquivo de banco de dados.
Thomas Mueller
8

Se alguém estiver procurando o código java para ler a versão do arquivo:

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();
}
Rafal Malek
fonte