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:
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'.
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();
}