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?

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.


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();
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.