Di mana Android menyimpan versi database SQLite?

88

Saya tidak dapat menemukan di mana Android menyimpan versi database dalam file database SQLite. Di mana tepatnya versi database disimpan?

bhups
sumber

Jawaban:

187

Anda dapat membaca versi menggunakan android.database.sqlite.SQLiteDatabase.getVersion().

Secara internal, metode ini menjalankan pernyataan SQL " PRAGMA user_version". Saya mendapatkannya dari kode sumber Android .

Di file database, versi disimpan pada byte offset 60 di header database file database, di kolom 'user cookie'.

Thomas Mueller
sumber
itu berguna, tetapi pertanyaan saya adalah di mana info versi ini disimpan di sistem file (atau mungkin dalam file database)?
bhups
3
Dan untuk membaca dan memodifikasinya stackoverflow.com/questions/8030779/…
Yaroslav Mytkalyk
bagaimana versi database bertahan ke dalam file database?
xuehui
@xuehui lihat jawabannya: byte 60 di file database.
Thomas Mueller
8

Jika seseorang mencari kode java untuk membaca versi dari file:

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
sumber