Wo speichert Android die Datenbankversion von SQLite?

88

Ich kann nicht finden, wo Android die Datenbankversion in der SQLite-Datenbankdatei speichert. Wo genau ist die Datenbankversion gespeichert?

bhups
quelle

Antworten:

187

Sie können die Version mit lesen android.database.sqlite.SQLiteDatabase.getVersion().

Intern führt diese Methode die SQL-Anweisung " PRAGMA user_version" aus. Ich habe das aus dem Android-Quellcode .

In der Datenbankdatei wird die Version mit dem Byte-Offset 60 im Datenbank-Header der Datenbankdatei im Feld 'Benutzer-Cookie' gespeichert.

Thomas Müller
quelle
Das war nützlich, aber meine Frage ist, wo diese Versionsinformationen im Dateisystem gespeichert werden (oder möglicherweise in einer Datenbankdatei).
Bhups
3
Und um es zu lesen und zu ändern stackoverflow.com/questions/8030779/…
Yaroslav Mytkalyk
Wie bleibt die Datenbankversion in der Datenbankdatei erhalten?
Xuehui
@xuehui siehe die Antwort: Byte 60 in der Datenbankdatei.
Thomas Mueller
8

Wenn jemand nach dem Java-Code sucht, um die Version aus der Datei zu lesen:

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
quelle