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

88

Je ne parviens pas à trouver où Android stocke la version de la base de données dans le fichier de base de données SQLite. Où exactement la version de la base de données est-elle stockée?

bhups
la source

Réponses:

187

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 à partir du code source Android .

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

Thomas Mueller
la source
c'était utile, mais ma question est de savoir où ces informations de version sont-elles stockées sur le système de fichiers (ou peuvent-elles être dans un fichier de base de données)?
bhups
3
Et pour le lire et le modifier stackoverflow.com/questions/8030779/…
Yaroslav Mytkalyk
comment la version de la base de données est-elle conservée dans le fichier de base de données?
xuehui
@xuehui voyez la réponse: l'octet 60 dans le fichier de base de données.
Thomas Mueller
8

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