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?

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'.


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


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();
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.