¿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?

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'.


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


¿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();
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.