Gdzie Android przechowuje wersję bazy danych SQLite?

88

Nie mogę znaleźć miejsca, w którym system Android przechowuje wersję bazy danych w pliku bazy danych SQLite. Gdzie dokładnie jest przechowywana wersja bazy danych?

bhups
źródło

Odpowiedzi:

187

Możesz przeczytać wersję za pomocą android.database.sqlite.SQLiteDatabase.getVersion().

Wewnętrznie ta metoda wykonuje instrukcję SQL „ PRAGMA user_version”. Mam to z kodu źródłowego Androida .

W pliku bazy danych wersja jest przechowywana z przesunięciem bajtów 60 w nagłówku bazy danych pliku bazy danych, w polu „plik cookie użytkownika”.

Thomas Mueller
źródło
to było przydatne, ale moje pytanie brzmi: gdzie ta wersja informacji jest przechowywana w systemie plików (lub może znajdować się w pliku bazy danych)?
bhups
3
I czytać i modyfikować stackoverflow.com/questions/8030779/…
Yaroslav Mytkalyk
w jaki sposób wersja bazy danych jest utrwalana w pliku bazy danych?
xuehui
@xuehui zobacz odpowiedź: bajt 60 w pliku bazy danych.
Thomas Mueller
8

Jeśli ktoś szuka kodu java do odczytania wersji z pliku:

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();
}
Rafał Małek
źródło