Bonsoir =)
Si j'ai bien compris, lorsque la classe provider appelle le onCreate de SQLiteOpenHelper si la version de la base installée dans l'Android est supérieur à la version donnée par défaut (private final DATABASE_VERSION = 1; ). Alors la méthode onUpgrade de SQLiteOpenHelper doit être automatiquement appelée.
Or ce n'est pas le cas.. j'incrémente bien la version de ma base via la méthode getVersion() (ceci fait à l'aide d'un bouton et vérifié avec quelques Toasts/log.i). J'ai également mis un Log.i au début de la méthode onUpgrade de SQLiteOpenHelper. Mais lorsque j'incrémente la version de ma base et que je relance l'application (run depuis Eclipse) :
- la base de données reste inchangée si j'ai modifié ces données avant de relancer.
- la version de la base a belle et bien été incrémentée.
- dans le logCat, je ne vois pas de trace de mon Log.i de onUpgrade..
J'ai parcouru la doc' et quelques forums...Je ne comprend pas d'où ça peut venir..
Voici mon constructeur OpenHelper et ma méthode onUpgrade, de la classe qui étend SQLiteOpenHelper :
et ma méthode onCreate de la classe qui étend ContentProvider :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private static final String DATABASE_NAME = "db_tpcontentprovider"; private static final int DATABASE_VERSION = 1; ... public OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); this.getWritableDatabase(); Log.e("OpenHelper.OpenHelper", "debut"); } ... public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.e("OpenHelper.onUpdate", "debut"); db.execSQL("DROP TABLE IF EXISTS " + TABLE_PLANETS +";"); onCreate(db); Log.e("OpenHelper.onUpdate", "fin"); }
Comme vous pouvez le voir, mon code est minimaliste et très similaire à celui de l'exemple "LoaderThrottle.java".Du coup, je comprend encore moins pourquoi le onUpgrade de mon "SQLiteOpenHelper" n'est pas appelé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public boolean onCreate() { Log.e("Provider.onCreate", "debut"); mOpenHelper = new OpenHelper(getContext()); Log.e("Provider.onCreate", "fin"); return true; }
Merci d'avance pour votre aide =)
Partager