IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Probleme sqlite Illegal argument exeption


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Probleme sqlite Illegal argument exeption
    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

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String)
    Tu es sur l'argument having et non group by.

    Donc ceci devrait mieux marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cursor cursorResults = db.query(TABLE_PROGRAMMES, colonnesARecup, null,
                    null, "exercice asc, duree asc",  null, null);
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse. Du coup j'ai trouver la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Cursor cursorResults = db.query(TABLE_PROGRAMMES, colonnesARecup, null,
                    null, null, null, "exercice asc, duree asc", null);
    Sinon j'ai une autre question: sur ma pages j'ai deux onglet
    - un ou l'utilisateur rentre un exercice et une durée avec un bouton créer
    - l'autre qui affiche un listeview ( du contenu de Bdd sqlite)
    Seulement les edittext exercice et duree, une fois rempli et le bouton appuyer j'aimerai que les edittext soit ré initialiser ( vide).
    Je c'est pas trop comment faire

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    j'aimerai que les edittext soit ré initialiser ( vide).
    Si tu veux ré-initialisé tes EditText, lors du click sur ton bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    EditText text ;
     
    // tu récupères ton edit text par son id ou autre
     
    // pour la vider
    text.setText("");
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. [MySQL] probleme trop d'arguments fonction sprintf
    Par docteurdorian dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2009, 12h37
  2. Petit probleme code::blocks , arguments ..
    Par julio.t dans le forum Débuter
    Réponses: 0
    Dernier message: 01/09/2008, 07h33
  3. probleme passage d'argument
    Par xclam dans le forum Langage
    Réponses: 5
    Dernier message: 01/06/2007, 09h48
  4. Probleme avec les arguments
    Par Pitou5464 dans le forum C
    Réponses: 6
    Dernier message: 06/11/2006, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo