Pregunta

básicamente he terminado de desarrollar una aplicación para Android que hace uso de bases de datos SQLite que copiar en el área de datos de usuario en el dispositivo por ejemplo /data/data/com.company.app/databases/users.db

No estoy seguro de cómo el procedimiento de actualización de la aplicación del mercado lleva a cabo y también estoy seguro de cómo pude probarlo.

Actualmente comprobar si existe la base de datos en el dispositivo y copiarlo si no lo hace (por lo general sólo se produce en el primer lanzamiento nunca). ¿Qué pasa si tengo una nueva versión de la base de datos en mi aplicación actualizada? Será una actualización del mercado borrar los datos del usuario para que se copie mi nueva base de datos en el próximo lanzamiento?

¿Qué ocurre en el futuro si hago discos cambios de base de datos / add / etc y el paquete de esto con la nueva aplicación? Será esta base de datos no sobrescribir la antigua base de datos?

De lo contrario, para evitar el copiado y anulando las bases de datos del paquete de aplicación en cada lanzamiento es que hay una manera de comprobar el tamaño y la fecha de los archivos de bases de datos y sólo copia si la base de datos en el paquete es más reciente?

Si alguien necesita una aclaración por favor pregunte.

¿Fue útil?

Solución

estoy haciendo algo similar. Lo que hice es establecer la versión de base de datos, y luego, cuando puedo comprobar si existe la base de datos, también para asegurarse de que es la versión correcta. Si no es así, puedo guardar favoritos del usuario de la base de datos, limpie y vuelva a copiar mi db, y luego poner de nuevo favoritos del usuario.

Esta es mi en la actualización

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 2) {

        System.out.println("Performing upgrade!");
        openDataBase();
        // save the old favorites
        Cursor mCursor = getFavorites();
        ArrayList<Stop> favs = allCursorToStops(mCursor);
        mCursor.close();

        deleteRecreate(db);

        openDataBase();

        for (int i = 0; i < favs.size(); i++)
            setFavorite(favs.get(i));

        close();

    } else {

        deleteRecreate(db);

    }
}

Aquí es donde puedo comprobar la existencia / si es necesario actualizar, etc.

    boolean dbExist = checkDataBase();

    if(dbExist){
        // check if we need to upgrade
        openDataBase();
        int cVersion = myDataBase.getVersion();
        close();
        if(cVersion != VERSION)
            onUpgrade(myDataBase, myDataBase.getVersion(), VERSION);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top