2 votes

Lors de l'installation d'une version plus récente/existante d'une application, la base de données SQLite est créée au lieu d'être réutilisée.

Lors de l'installation d'une version plus récente/existante d'une application, la base de données SQLite est créée au lieu d'être réutilisée - la base de données existante disparaît.

Voici comment se déroulent mes cours

class HDDBAdapter { int DB_LOCA_VERSION = 1; HDDBOpenHelper hdHelper;

`HDDBAdapter(_ctxt) {
hdHelper = new HDDBOpenHelper(_ctxt, "mydb.db", null, DB_LOCA_VERSION);
}

  open() {
     try {
       db =hdHelper.getWritableDatabase();
     }
     catch ...
  }

static class HDDBOpenHelper extends SQLiteopenHelper {
   public HunyDewDBOpenHelper(Context ct, String n, CursorFactory cf, int v) {
        super(ct, n, cf, vv);
    }

  private static final String DB_CREATE_BOX = "create table " + "mydb.db" + "("
        + ... + ");";

    public void onCreate(SQLiteDatabase arg0) {
        arg0.setVersion(DB_LOCA_VERSION);
        arg0.execSQL(DB_CREATE_BOX);
    }

    public void onOpen(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        super.onOpen(db);
    }` 

}

La première fois que je lance l'application - l'application crée une base de données avec mes entrées. Ensuite, je charge une version plus récente de l'application - DB_LOCA_VERSION reste le même. Dans la nouvelle version, c'est la logique non liée à la base de données qui a été modifiée.

J'ai donc d'abord "forcé l'arrêt" de l'application ("Clear Data" n'est pas exécuté), puis désinstallé l'application. Maintenant, je lance la nouvelle version - cette nouvelle version n'utilise pas la base de données existante - elle en crée une nouvelle. Comment cela se fait-il ? Je veux utiliser la base de données existante. Veuillez me faire savoir si quelque chose m'échappe. Tous les indices/points/questions seront utiles.

Lorsque je l'installe, il échoue apparemment à l'intérieur getWritableDatabase alors onCreate est appelé en premier - avant onOpen . Veuillez noter que le constructeur de HDDBAdapter est inchangée dans toutes les versions de l'application. hdHelper pour l'existant "mydb.db" ? Et ne pas avoir getWritableDatabase cause onCreate pour être invoqué.

Merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X