J'ai une application Android qui doit vérifier s'il y a déjà un enregistrement dans la base de données, et si non, traiter certaines choses et éventuellement l'insérer, et simplement lire les données de la base de données si les données existent. J'utilise une sous-classe de SQLiteOpenHelper pour créer et obtenir une instance réinscriptible de SQLiteDatabase, qui, je pensais, s'occupait automatiquement de créer la table si elle n'existait pas déjà (puisque le code pour le faire est dans la méthode onCreate(...)).
Cependant, lorsque la table n'existe PAS encore, et que la première méthode exécutée sur l'objet SQLiteDatabase que j'ai est un appel à query(...), mon logcat montre une erreur de "I/Database(26434) : sqlite returned : error code = 1, msg = no such table : appdata", et bien sûr, la table appdata n'est pas créée.
Une idée de la raison ?
Je cherche soit une méthode pour tester si la table existe (car si elle n'existe pas, les données ne sont certainement pas dedans, et je n'ai pas besoin de les lire avant d'y écrire, ce qui semble créer la table correctement), soit un moyen de s'assurer qu'elle est créée, et qu'elle est juste vide, à temps pour le premier appel à query(...).
EDIT
Cette réponse a été postée après les deux réponses ci-dessous :
Je pense que j'ai peut-être trouvé le problème. Pour une raison quelconque, j'ai décidé qu'un SQLiteOpenHelper différent était censé être créé pour chaque table, même si les deux accèdent au même fichier de base de données. Je pense que la refactorisation de ce code pour n'utiliser qu'un seul OpenHelper, et créer les deux tables à l'intérieur de son onCreate pourrait fonctionner mieux...