Dove memorizza Android la versione del database di SQLite?


88

Non riesco a trovare dove Android memorizza la versione del database all'interno del file del database SQLite. Dove viene archiviata esattamente la versione del database?

Risposte:


187

Puoi leggere la versione usando android.database.sqlite.SQLiteDatabase.getVersion().

Internamente, questo metodo esegue l'istruzione SQL " PRAGMA user_version". L'ho preso dal codice sorgente di Android .

Nel file di database, la versione è memorizzata con offset di byte 60 nell'intestazione del database del file di database, nel campo "cookie utente".


è stato utile, ma la mia domanda è dove vengono memorizzate queste informazioni sulla versione nel filesystem (o potrebbero essere nel file di database)?
bhups


come viene mantenuta la versione del database nel file del database?
xuehui

@xuehui vedi la risposta: byte 60 nel file di database.
Thomas Mueller

8

Se qualcuno sta cercando il codice java per leggere la versione dal 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();
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.