Ne trouve pas ma deuxième table de ma BDD
Résolurapidegoyes Messages postés 143 Statut Membre -
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