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:
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”.
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();
}