web-dev-qa-db-fra.com

Où Android stocke-t-il la version de la base de données SQLite?

Je n'arrive pas à trouver où Android stocke la version de la base de données dans le fichier de base de données SQLite. Où est exactement la version de la base de données stockée?

87
bhups

Vous pouvez lire la version en utilisant Android.database.sqlite.SQLiteDatabase.getVersion().

En interne, cette méthode exécute l'instruction SQL " PRAGMA user_version ". Je l'ai obtenu du code source Android .

Dans le fichier de base de données, la version est stockée à un décalage d'octet 60 dans le en-tête de base de données du fichier de base de données, dans le champ 'cookie utilisateur'.

185
Thomas Mueller

Si quelqu'un cherche le code Java pour lire la version du fichier:

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