Difficulté avec requête SQLite
Résolurapidegoyes Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai l'intention de calculer la somme de ma colonne syst dans ma table releves.
extrait création de la 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)"); }//fin méthode onCreate
Dès exécution de ma requête mon appli plante.
J'ai beau chercher je ne trouve pas de piste.
voici mon extrait de requête:
public void calculPourSyst() { SQLiteDatabase db = this.getWritableDatabase(); db.execSQL("SELECT SUM(syst), * FROM releves");//somme de syst }// fin de calculPourSyst
Voici un extrait du logcat:
Queries can be performed using SQLiteDatabase query or rawQuery methods only
Si j'essaye avec rawQuery c'est pareil, il plante
Merci de m'épauler
Cordialement
rapidego&
Windows / Firefox 134.0
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table
- Impossible de supprimer une page word - Guide
- Table ascii - Guide
- Creation de site web - Guide
- Table de matière word - Guide
- Google moteur de recherche page d'accueil - Guide
4 réponses
Bonjour,
Tu as plusieurs soucis dans ton code.
Déjà, avec un SUM .. tu ne peux pas en plus mettre le *
Et en effet, il ne faut pas utiliser execSQL qui sert uniquement pour faire des update / delete / insert
mais rawQuery quand tu fais du select.
Et enfin, ta fonction n'utilise pas le résultat de la requête..
Essaye ça
public int calculPourSyst() { SQLiteDatabase db = this.getReadableDatabase(); int sumSyst = 0; // Requête SQL corrigée String query = "SELECT SUM(syst) AS total_syst FROM releves"; Cursor cursor = db.rawQuery(query, null); // Récupération du résultat if (cursor.moveToFirst()) { sumSyst = cursor.getInt(cursor.getColumnIndexOrThrow("total_syst")); } // Fermeture du curseur cursor.close(); return sumSyst; }
Bonjour jordane45,
Merci pour ton aide, je vais essayer de rectifier ce soir.
Très cordialement
rapidego&
Bonsoir à tous,
Je viens à l'instant d' essayer super ça fonctionne.
J'ai codé l' exemple de jordane45 dans mon fichier SQLDataBaseHelper dans le quel je place toutes mes requêtes.
Ensuite je lance ta requête par action sur un bouton dans mon fichier AfficheBDD.
J'ai relu mes notes sur MySQL effectivement il ne faut pas coder avec étoile * car pour ce dernier, on ne s'en sert que pour sélectionner toutes les colonnes d'une table.
Au sujet du rajout de AS total_syst quel est vraiment son rôle d'après mes recherches il s'agit de création d'une colonne à cet effet je n'osais pas l'utiliser.
C'est un peu flou pour moi, je suis preneur de renseignements à ce sujet.
Merci à tous
Très cordialement
A+++
rapidegoyes
Bonsoir,
C'est super je viens d'essayer la fonction en utilisant COUNT(), AVG(),pour la moyenne,
MIN() renvoie la valeur la plus basse, MAX() idem mais valeur la plus haute.
Tout fonctionne il me fallait les 3.
Merci pour tout je vais enfin pouvoir continuer mon code, je butais vraiment la dessus
A+++ très cordialement
rapidegoyes