Ne trouve pas ma deuxième table de ma BDD
Résolurapidegoyes Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je reviens vers vous car je n'arrive pas à solutionner mon problème.
Je viens d'ajouter une deuxième table à ma BDD.
Comme indiqué dans mon précédent post ma première table fonctionne sans problème.
C'est que mon appli plante lors de la tentative d'ouverture de ma deuxième table.
Ci-dessous mon code dans SQLiteDataBaseHelper
public class SQLiteDataBaseHelper extends SQLiteOpenHelper { public static int sumSyst = 0;//création variable de class systolique public static int sumDias = 0;//idem pour diastolique public static int sumPulse = 0; public static int maxiSyst = 0; public static int miniSyst = 0; public static int maxiDiast = 0; public static int miniDiast = 0; public static final String DATABASE_NAME = "Tensions.db"; public static final String TABLE_NAME = "releves"; //*************************************************** public static final String TABLE_ARCHIVE = "archives"; //**************************************************** public static final String COL_1 = "ID"; public static final String COL_2 = "JOUR"; public static final String COL_3 = "PERIODE"; public static final String COL_4 = "SYST"; public static final String COL_5 = "DIAS"; public static final String COL_6 = "PULS"; //*********************************************** public static final String COL_7 = "IDAR"; public static final String COL_8 = "NOM"; public static final String COL_9 = "DATE"; public static final String COL_10 = "MSYST"; public static final String COL11 = "MDIAS"; public static final String COL_12 ="MPULS"; //contructeur rempli public SQLiteDataBaseHelper(@Nullable Context context) { super(context, DATABASE_NAME, null, 1); } //méthode de création de la table //attention à mettre un espace derrière table @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE table" + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + "JOUR TEXT, PERIODE TEXT, SYST INTEGER, DIAS INTEGER, PULS INTEGER)"); db.execSQL("CREATE table" + TABLE_ARCHIVE + "(IDAR INTEGER PRIMARY KEY AUTOINCREMENT," + "NOM TEXT, DATE TEXT, MSYST INTEGER, MDIAS INTEGER, MPULS INTEGER)"); }//fin méthode onCreate //supprime et recré la table pour la mettre à jour @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); onCreate(db);//recré la table pour la mettre à jour db.execSQL("DROP TABLE IF EXISTS" + TABLE_ARCHIVE); onCreate(db);//recré la table pour la mettre à jour } //méthode qui insère les données public boolean insertData(String jour, String periode, Integer syst, Integer dias, Integer puls){ SQLiteDatabase db = this.getWritableDatabase(); //ouvre la table en écriture ContentValues contentValues = new ContentValues();//cré l'objet contentvalues contentValues.put(COL_2, jour); contentValues.put(COL_3, periode); contentValues.put(COL_4, syst); contentValues.put(COL_5, dias); contentValues.put(COL_6, puls); long result = db.insert(TABLE_NAME, null, contentValues); return result != -1; }//fin insertdata public boolean insertDonnees(String nom, String date, String msyst, String mdias, String mpuls) { SQLiteDatabase db = this.getWritableDatabase(); //ouvre la table en écriture ContentValues contentValues1 = new ContentValues();//cré l'objet contentvalues contentValues1.put(COL_8, nom); contentValues1.put(COL_9, date); contentValues1.put(COL_10, msyst); contentValues1.put(COL11, mdias); contentValues1.put(COL_12, mpuls); long result1 = db.insert(TABLE_ARCHIVE, null, contentValues1); return result1 != -1; } public Cursor crerColonne(){ SQLiteDatabase db = this.getWritableDatabase(); return db.rawQuery("SELECT ID as id, JOUR, PERIODE, SYST, DIAS, PULS, * FROM releves", null); } //méthode pour supprimer une ligne public void supprime_ligne(long id){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, "id = ?", new String[] {Integer.toString((int) id) }); } //fonction pour supprimer toutes les données de la BDD public void deleteAll(){ SQLiteDatabase db = this.getWritableDatabase(); db.execSQL("DELETE FROM " +TABLE_NAME); db.close(); } //méthode pour afficher toutes les données public Cursor Toute_lesDatas(){ SQLiteDatabase db = this.getWritableDatabase(); return db.rawQuery("SELECT ID as _id, * FROM releves ORDER BY JOUR", null); //attention toujours mettre un espace derrrière le mot as } //*************************************************************************************** //méthode pour afficher toutes les données de la deuxième table archives public Cursor TotalData2(){ SQLiteDatabase db = this.getWritableDatabase(); return db.rawQuery("SELECT IDAR as _idar, * FROM archives ORDER BY NOM", null); }
Windows / Firefox 135.0
C'est cette dernière requête avec TotalData2 qui pose problème.
Mon message d'erreur du logcat: Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such table: archives (code 1):
, while compiling: SELECT IDAR as _idar, * FROM archives ORDER BY NOM)
Pourtant j'ai bien créé la table archives vu le code ci-dessus.
Merci de bien vouloir m'aider.
très cordialement
rapidegoyes
- Ne trouve pas ma deuxième table de ma BDD
- Table ascii - Guide
- Pourquoi ma tv ne trouve pas toutes les chaînes - Guide
- Table des matières word - Guide
- Deuxieme ecran pc - Guide
- Utiliser tablette comme deuxieme ecran - Guide
5 réponses
Bonjour,
pour la méthode onCreate, un commentaire indique de faire attention à mettre un espace entre le mot-clé sql TABLE et le nom de la table, ce qui ne semble pas être le cas dans ton code : la création des tables ne semble donc pas fonctionné dans ce cas.
Bonsoir sdbh,
je ne vois pas où il faut mettre l'espace que tu m'indique.
Pourrai tu me donner plus d'indications, il me semble que j'ai des espaces.
Par rapport à ma première table releves j'ai respecté la même disposition des caractères .
Ce qui fait que la première fonctionne sans problème, mais pas la deuxième nommée archives
Merci
cordialement
à+++ rapidegoyes
Bonsoir,
Décidément je n'y arrive pas à ajouter une deuxième table.
Vu mon code ci-dessus l'erreur est qu'il ne trouve pas ma deuxième table
Merci de m'épauler, j'ai beau chercher je ne trouve pas de doc pour celà.
cordialement
rapidegoyes
Bonsoir jordane45,
Merci pour ton aide
J'ai desinstallé l'appli et j'ai mis l'espace après table
public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + "JOUR TEXT, PERIODE TEXT, SYST INTEGER, DIAS INTEGER, PULS INTEGER)"); db.execSQL("CREATE table " + TABLE_NAME2 + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + "NOM TEXT, DATE TEXT, MSYST INTEGER, MDIAS INTEGER, MPULS INTEGER)"); }//fin méthode onCreate
Maintenant il me semble que la deuxième table est prise en compte.
Mais il y a une nouvelle erreur comme suit:
Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
Voici le code de déclaration de la table:
public static final String DATABASE_NAME = "Tensions.db"; public static final String TABLE_NAME = "releves"; //*************************************************** public static final String TABLE_NAME2 = "archives"; //**************************************************** public static final String COL_1 = "ID"; public static final String COL_2 = "JOUR"; public static final String COL_3 = "PERIODE"; public static final String COL_4 = "SYST"; public static final String COL_5 = "DIAS"; public static final String COL_6 = "PULS"; //*********************************************** public static final String COL_7 = "ID"; public static final String COL_8 = "NOM"; public static final String COL_9 = "DATE"; public static final String COL_10 = "MSYST"; public static final String COL_11 = "MDIAS"; public static final String COL_12 ="MPULS"; //contructeur rempli public SQLiteDataBaseHelper(@Nullable Context context) { super(context, DATABASE_NAME, null, 1); } //méthode de création de la table //attention à mettre un espace derrière table @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + "JOUR TEXT, PERIODE TEXT, SYST INTEGER, DIAS INTEGER, PULS INTEGER)"); db.execSQL("CREATE table " + TABLE_NAME2 + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + "NOM TEXT, DATE TEXT, MSYST INTEGER, MDIAS INTEGER, MPULS INTEGER)"); }//fin méthode onCreate //supprime et recré la table pour la mettre à jour @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); onCreate(db);//recré la table pour la mettre à jour db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME2); onCreate(db);//recré la table pour la mettre à jour }
J'ai codé comme la première table qui s'affiche.
Voici l'adapter:
Cursor data2 = db.TotalData2(); //appel la requête qui affiche toute la Bdd //écrite dans SQLiteDataBaseHelper //création de l'ojet setadater pour afficher la liste SimpleCursorAdapter adapter8 = new SimpleCursorAdapter(this, R.layout.row_item, data2, new String[] {"NOM", "DATE", "MSYST", "MDIAS", "MPULS"}, new int[] {R.id.textViewCol2, R.id.textViewCol3, R.id.textViewCol4, R.id.textViewCol5, R.id.textViewCol6}); lv.setAdapter(adapter8);
Vraiment là je bloque
Merci pour ton aide
Cordialement
rapidegoyyes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question