Question

J'ai essentiellement fini de développer une application Android qui utilise des bases de données SQLite que je copie à la zone de données d'utilisateur sur l'appareil, par exemple /data/data/com.company.app/databases/users.db

Je ne suis pas sûr comment la procédure de mise à jour application du marché a lieu et je suis aussi incertain quant à la façon dont je pourrais le tester.

Je vérifie actuellement si la base de données existe sur le périphérique et la copie si elle ne (se produit généralement que le premier lancement) non. Qu'est-ce qui se passe si j'ai une nouvelle version de la base de données dans mon application mise à jour? Est-ce une mise à jour du marché effacer les données de l'utilisateur afin qu'il copiera ma nouvelle base de données dans le prochain lancement?

Qu'est-ce qui se passe dans l'avenir si je fais enregistre les changements de base de données / add / etc et le paquet de ce avec la nouvelle application? Cette base de données ne sera pas écraser l'ancienne base de données?

Dans le cas contraire, pour ne pas copier et en remplaçant les bases de données à partir du paquet d'applications sur chaque lancement est-il un moyen de vérifier la taille et la date des fichiers de base de données et ne copie si la base de données dans le paquet est plus récent?

Si quelqu'un a besoin d'éclaircissements s'il vous plaît demander.

Était-ce utile?

La solution

Je suis en train de faire quelque chose de similaire. Ce que j'ai est défini la version de base de données, puis quand je vérifie si la base de données existe, je également vous assurer qu'il est la bonne version. Si ce n'est pas, enregistrer les favoris de l'utilisateur de la base de données, wipe et recopie mon db, puis mis favoris de l'utilisateur du dos.

Ceci est mon sur la mise à niveau

    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);

    }
}

Voici où je vérifie l'existence / si besoin de mise à niveau 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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top