Bonjour, j’essai depuis quelque temps de réaliser un programme permettant d'ajouter deux variable dans une base de donnée sqlite.
Mais voila une erreur que je n’arrive pas a résoudre:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
03-12 09:57:49.063: E/AndroidRuntime(229): Uncaught handler: thread main exiting due to uncaught exception
03-12 09:57:49.113: E/AndroidRuntime(229): java.lang.IllegalArgumentException: HAVING clauses are only permitted when using a groupBy clause
03-12 09:57:49.113: E/AndroidRuntime(229): 	at android.database.sqlite.SQLiteQueryBuilder.buildQueryString(SQLiteQueryBuilder.java:170)
03-12 09:57:49.113: E/AndroidRuntime(229): 	at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1105)
03-12 09:57:49.113: E/AndroidRuntime(229): 	at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1066)
03-12 09:57:49.113: E/AndroidRuntime(229): 	at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1143)
Mon code:
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
 
 
 
public class DatabaseHelper extends SQLiteOpenHelper {
 
    /**
     * Nom de la DB (nom du fichier SQLite).
     */
    private static String DATABASE_NAME = "accesdbtests.db";
 
    /**
     * Numéro de version de la DB.
     * Si ce numéro change, la fonction onUpgrade est exécutée
     * pour effacer le contenu de la DB et recréer la nouvelle
     * version du schéma.
     */
    private static final int DATABASE_VERSION = 1;
 
    /**
     * Lien vers la session DB.
     */
    private SQLiteDatabase db;
 
    /**
     * Nom de la table de la DB (oui une seule table).
     * Il semblerait que la taille du nom soit limitée???
     */
    private static String TABLE_PROGRAMMES = "Programs";
 
    /**
     * Script SQL de création de la table Programmes.
     */
    private static String CREATE_TABLE_PROGRAMMES = "create table "
            + TABLE_PROGRAMMES + " ("
            + "techkey integer PRIMARY KEY  AUTOINCREMENT,"
            + "exercice VARCHAR(250) NOT NULL," + "duree VARCHAR(250) NOT NULL"
            + ")";
 
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        db = getWritableDatabase();
    }
 
    /**
     * Exécuté si la DB n'existe pas.
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_PROGRAMMES);
    }
 
    /**
     * Exécuté chaque fois que le numéro de version de DB change.
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PROGRAMMES);
        onCreate(db);
    }
 
    /**
     * Insère un utilsiateur dans la DB sur base du POJO Personne.
     */
    public long insertExo(programme user) {
        ContentValues exoToInsert = new ContentValues();
        exoToInsert.put("exercice", user.getexercice());
        exoToInsert.put("duree", user.getduree());
        return db.insert(TABLE_PROGRAMMES, null, exoToInsert);
    }
 
    /**
     * Charge le contenu de la table Programmes
     * et retourne ce contenu sous la forme d'une liste de NOM + " " + PRENOM;
     */
    public ArrayList<String> getprogramme() {
        ArrayList<String> output = new ArrayList<String>();
 
        String[] colonnesARecup = new String[] { "exercice", "duree" };
 
        Cursor cursorResults = db.query(TABLE_PROGRAMMES, colonnesARecup, null,
                null, null, "exercice asc, duree asc", null);
        if (null != cursorResults) {
            if (cursorResults.moveToFirst()) {
                do {
                    int columnIdxExercice = cursorResults.getColumnIndex("exercice");
                    int columnIdxDuree = cursorResults.getColumnIndex("duree");
                    String exerciceduree = cursorResults.getString(columnIdxExercice)
                            + " " + cursorResults.getString(columnIdxDuree);                             
                    output.add(exerciceduree);
                } while (cursorResults.moveToNext());
            } // end§if
        }
 
        return output;
    }
 
}
Merci d'avance pour votre aide