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?

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”.


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


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();
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.