¿Dónde almacena Android la versión de la base de datos de SQLite?

88

No puedo encontrar dónde almacena Android la versión de la base de datos dentro del archivo de base de datos SQLite. ¿Dónde se almacena exactamente la versión de la base de datos?

bhups
fuente

Respuestas:

187

Puede leer la versión usando android.database.sqlite.SQLiteDatabase.getVersion().

Internamente, este método ejecuta la instrucción SQL " PRAGMA user_version". Lo obtuve del código fuente de Android .

En el archivo de base de datos, la versión se almacena en el byte offset 60 en el encabezado de la base de datos del archivo de base de datos, en el campo 'cookie de usuario'.

Thomas Mueller
fuente
eso fue útil, pero mi pregunta es ¿dónde se almacena la información de esta versión en el sistema de archivos (o puede estar en el archivo de la base de datos)?
bhups
3
Y para leerlo y modificarlo stackoverflow.com/questions/8030779/…
Yaroslav Mytkalyk
¿Cómo se conserva la versión de la base de datos en el archivo de la base de datos?
xuehui
@xuehui vea la respuesta: byte 60 en el archivo de base de datos.
Thomas Mueller
8

Si alguien está buscando el código java para leer la versión del archivo:

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
fuente