Non riesco a trovare dove Android memorizza la versione del database all'interno del file di database SQLite. Dove è memorizzata esattamente la versione del database?Dove viene memorizzato Android nella versione del database di SQLite?
86
A
risposta
180
È possibile leggere la versione utilizzando android.database.sqlite.SQLiteDatabase.getVersion()
.
Internamente, questo metodo esegue l'istruzione SQL "PRAGMA user_version
". L'ho preso dallo Android source code.
Nel file di database, la versione viene memorizzata nell'offset di byte 60 nel database header del file di database, nel campo "cookie utente".
6
Se qualcuno sta cercando per il codice Java per leggere la versione da 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();
}
che era utile, ma la mia domanda è: da dove viene questa informazione versione vengono memorizzati sul filesystem (o può essere in file di database) ? – bhups
È memorizzato nell'intestazione del database (ho aggiornato la mia risposta). –
E leggerlo e modificarlo http://stackoverflow.com/questions/8030779/change-sqlite-database-version-number –