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

Composants graphiques Android Discussion :

Afficher les données d'une Base de données dans une ListView


Sujet :

Composants graphiques Android

  1. #21
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Deux remarques :

    D'abord, il te manque maintenant un espace avant le LIKE, comme suit : . Egalement, si tu utilises LIKE il faut ensuite utiliser des caractères jokers comme % ou _

    Ensuite, il faut que ta requête SQL contienne impérativement un champs nommé "_id" (avec le _ devant !). J'avais fait la même remarque à un autre participant il y a quelques jours : https://www.developpez.net/forums/d1...e/#post9104365
    Bonsoir,

    J'ai placé un espace à LIKE.

    J'ai créé une méthode pour exprimer une requête avec rawQuery ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public Cursor getViandes()
        {
            return bdd.rawQuery("SELECT *, ID as_id, FROM table_viandes", null);
        }
    Puis j'appelle cette méthode dans Affichage1 code ci-dessous
    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
    public class Affichage1 extends ActionBarActivity {
     
        public Affichage1() {
        }
     
        @Override
        public String toString() {
            return "Affichage1{}";
        }
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_affichage1);
     
            //Creation d'une instance de la classe GestionBDD(creer la Bdd)
            GestionBDD bddViandes = new GestionBDD(this);
     
            //On ouvre la base de donnees
            bddViandes.open();
     
            //Creation d'une ligne pour une viande
            Viandes decoupe = new Viandes("boeuf", "cote", "4", "BG");
     
            // insertion d'une viande
            bddViandes.insertViandes(decoupe);
     
            //Appel méthode contenant les valeurs du Cursor
            //Cursor produit = bddViandes.getViandesWithTitre(decoupe.getType());
     
            //Appel méthode contenant les valeurs du Cursor
            Cursor produit = bddViandes.GetAll(decoupe.getType());
     
            bddViandes.getViandes(); //appel méthode getViandes
     
            //recuperation du listview present dans mon IHM
            ListView lv = (ListView) findViewById(R.id.Afficheliste);
     
            SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, produit,
                            new  String[] {"TYPE"}, new  int[]{android.R.id.text1 });
     
            lv.setAdapter(adapter);
     
        }   //*****************fin de la méthode onCreate*************************************
    J'ai toujours une erreur comme suit:
    android.database.sqlite.SQLiteException: near "FROM": syntax error: , while compiling: SELECT *, ID as_id, FROM table_viandes

    Je tourne et retourne ce code sans succès, où se cache donc ce problème?

    Je te remercie pour ton aide
    Cordialement

  2. #22
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Le problème c'est que fais des erreurs SQL depuis le début (c'est ballot). Essayes avec une requête simple :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Cursor getViandes()
        {
            return bdd.rawQuery("SELECT ID as _id, TYPE FROM table_viandes", null);
        }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #23
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Le problème c'est que fais des erreurs SQL depuis le début (c'est ballot). Essayes avec une requête simple :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Cursor getViandes()
        {
            return bdd.rawQuery("SELECT ID as _id, TYPE FROM table_viandes", null);
        }
    Bonsoir,

    C'est toujours le même problème et une erreur identique.
    J'ai enlevé le mot TYPE.
    Si je laisse TYPE il lui manque la colonne _id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Cursor getViandes()
        {
            return bdd.rawQuery("SELECT ID as_id, FROM table_viandes", null);
        }
    Je vais voir pour étudier de plus près le SQL.

    J'avais étudié et créé une Bdd avec MySQL ce n'est pas tout à fait pareil pour la syntaxe.

    Je vais arrêter là les frais et étudier le SQL.

    Je te remercie pour l'aide et la patience que tu as eu pour m'épauler.

    Cordialement et encore merci!

  4. #24
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Citation Envoyé par Rapidego Voir le message
    Bonsoir,
    C'est toujours le même problème et une erreur identique.
    J'ai enlevé le mot TYPE.
    Si je laisse TYPE il lui manque la colonne _id.
    Sauf que tu ne montres pas les messages d'erreurs et que c'est difficile de t'aider du coup. La réponse forcément est dans les messages d'erreurs.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #25
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Et soit concentré, je n'ai jamais écrit
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID as_id, FROM table_viandes
    mais bien
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID as _id, TYPE FROM table_viandes
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  6. #26
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Et soit concentré, je n'ai jamais écrit
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID as_id, FROM table_viandes
    mais bien
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID as _id, TYPE FROM table_viandes
    Bonsoir,

    Oui bien sûr j'avais bien recopié ton code et je m'excuse pour le malentendu,
    j'étais un peu découragé avec 76 au compteur les réflexes .........
    J'avais volontairement enlevé le mot TYPE pour faire un essai!

    J'ai à nouveau essayé ce soir à 2 reprises avec TYPE et sans TYPE

    Voilà les messages d'erreurs avec le code tel quel comprenant le mot TYPE (copié-collé)
    là il ne reconnait pas la colonne _id

    02-16 22:39:14.136 4305-4305/com.example.rapidego.frigo1 E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rapidego.frigo1/com.example.rapidego.frigo1.Affichage1}: java.lang.IllegalArgumentException: column '_id' does not exist
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3844)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
    at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
    at android.widget.CursorAdapter.init(CursorAdapter.java:115)
    at android.widget.CursorAdapter.<init>(CursorAdapter.java:94)
    at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:47)
    at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:84)
    at com.example.rapidego.frigo1.Affichage1.onCreate(Affichage1.java:54)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)*
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)*
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)*
    at android.os.Handler.dispatchMessage(Handler.java:99)*
    at android.os.Looper.loop(Looper.java:130)*
    at android.app.ActivityThread.main(ActivityThread.java:3844)*
    at java.lang.reflect.Method.invokeNative(Native Method)*
    at java.lang.reflect.Method.invoke(Method.java:507)*
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)*
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)*
    at dalvik.system.NativeStart.main(Native Method)*



    Maintenant sans le mot TYPE alors il reconnait et accepte la colonne alias _id
    mais indique une erreur près de FROM !

    02-16 22:46:52.069 4512-4512/com.example.rapidego.frigo1 E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rapidego.frigo1/com.example.rapidego.frigo1.Affichage1}: android.database.sqlite.SQLiteException: near "FROM": syntax error: , while compiling: SELECT ID as _id, FROM table_viandes
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3844)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: android.database.sqlite.SQLiteException: near "FROM": syntax error: , while compiling: SELECT ID as _id, FROM table_viandes
    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
    at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:106)
    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:67)
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1365)
    at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1333)
    at com.example.rapidego.frigo1.GestionBDD.getViandes(GestionBDD.java:151)
    at com.example.rapidego.frigo1.Affichage1.onCreate(Affichage1.java:49)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)*
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)*
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)*
    at android.os.Handler.dispatchMessage(Handler.java:99)*
    at android.os.Looper.loop(Looper.java:130)*
    at android.app.ActivityThread.main(ActivityThread.java:3844)*
    at java.lang.reflect.Method.invokeNative(Native Method)*
    at java.lang.reflect.Method.invoke(Method.java:507)*
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)*
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)*
    at dalvik.system.NativeStart.main(Native Method)*

    Cordialement et merci pour ton aide je vais persévérer.

  7. #27
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Quand tu enlèves TYPE, c'est normal car tu as une erreur de syntaxe SQL. Contentes toi de recopier la requête que je t'ai donnée.

    Concernant la première erreur, le cursorAdapter n'est pas content car il ne trouve pas de colonne _id dans le curseur, ce qui est très étonnant. D'où ma question bête : tu passes le bon curseur à ton cursorAdapter au moins ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  8. #28
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Quand tu enlèves TYPE, c'est normal car tu as une erreur de syntaxe SQL. Contentes toi de recopier la requête que je t'ai donnée.

    Concernant la première erreur, le cursorAdapter n'est pas content car il ne trouve pas de colonne _id dans le curseur, ce qui est très étonnant. D'où ma question bête : tu passes le bon curseur à ton cursorAdapter au moins ?
    Bonsoir,

    J'ai à nouveau recopié la requête.
    Le message d'erreur réapparait comme ci-dessous

    column '_id' does not exist

    Je suis tes conseils et je vais essayer de régler cela: tu passes le bon curseur à ton cursorAdapter au moins ?

    Je me manifeste dès que j'ai des résultats

    Merci et à plus

    Cordialement rapidego

  9. #29
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Rapidego Voir le message
    Bonsoir,

    J'ai à nouveau recopié la requête.
    Le message d'erreur réapparait comme ci-dessous

    column '_id' does not exist

    Je suis tes conseils et je vais essayer de régler cela: tu passes le bon curseur à ton cursorAdapter au moins ?

    Je me manifeste dès que j'ai des résultats

    Merci et à plus

    Cordialement rapidego
    Bonsoir,

    J'ai essayé de trouver un autre curseur en vain rien à faire ça ne marche pas.
    J'ai toujours la même erreur
    column '_id' does not exist

    J'ai recherché d'éventuelles erreurs dans mon code sans succès.

    En tout cas ma base fonctionne et j'arrive sans problème à afficher des données dans un toast.

    Cet affichage dans un ListView ne me réussi pas

    Que peut-on encore faire?

    Merci pour d'éventuels conseils.

    Cordialement

  10. #30
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    J'ai dis cela car pour moi, dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, produit,
                            new  String[] {"TYPE"}, new  int[]{android.R.id.text1 });
    Ce n'est pas du tout produit qu'il faut passer en paramètre, mais bien le curseur obtenu par la méthode getViandes() que l'on a vu ensemble. Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Cursor data  = bddViandes.getViandes(); //méthode qui fait le rawQuery
     
    SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, data,
                            new  String[] {"TYPE"}, new  int[]{android.R.id.text1 });
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  11. #31
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    J'ai dis cela car pour moi, dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, produit,
                            new  String[] {"TYPE"}, new  int[]{android.R.id.text1 });
    Ce n'est pas du tout produit qu'il faut passer en paramètre, mais bien le curseur obtenu par la méthode getViandes() que l'on a vu ensemble. Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Cursor data  = bddViandes.getViandes(); //méthode qui fait le rawQuery
     
    SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, data,
                            new  String[] {"TYPE"}, new  int[]{android.R.id.text1 });
    Bonsoir,
    J'ai apporté les modifs au code mais c'est toujours pareil l'erreur persiste.
    Voici mon code te serait-il possible de le vérifier.

    Fichier GestionBDD

    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    package com.example.rapidego.frigo1;
     
    /**
     * Created by rapidego on 16/06/2015.
     */
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
     
    public class GestionBDD
    {
        //variables
        private static final int VERSION_BDD = 1;
        private static final String NOM_BDD = "viandes.db";
     
        private static final String TABLE_VIANDES = "table_viandes";
     
        private static final String COL_ID = "ID";
        private static final int NUM_COL_ID = 0;
        private static final String COL_TYPE = "TYPE";
        private static final int NUM_COL_TYPE = 1;
        private static final String COL_ETAT = "ETAT";
        private static final int NUM_COL_ETAT = 2;
        private static final String COL_ENDROIT = "ENDROIT";
        private static final int NUM_COL_ENDROIT = 3;
        private static final String COL_NOMBRE = "NOMBRE";
        private static final int NUM_COL_NOMBRE = 4;
     
        private SQLiteDatabase bdd; // Declare objet bdd
        private MaBaseSQLite maBaseSQLite; // Declare objet maBaseSQLite
        private String titre;
     
        //Constructeur rempli
        public GestionBDD(Affichage1 context)
        {
            //on cree la BDD et sa table
            maBaseSQLite = new MaBaseSQLite(context, NOM_BDD, null, VERSION_BDD);
        }
     
        public GestionBDD() //constructeur vide
        {
     
        }
     
        public void open()
        {
            //on ouvre la bdd en ecriture
            bdd = maBaseSQLite.getWritableDatabase();
        }
     
        public void close()
        {
            //on ferme l'acces a la bdd
            bdd.close();
        }
     
        public SQLiteDatabase getBdd()
        {
            return  bdd;
        }
     
        public long insertViandes(Viandes viandes)
        {
            //creation d'un ContentValues (fonctionne comme une HashMap
            ContentValues values = new ContentValues();
            //On lui ajoute une valeur associee a une clef (qui est le nom de la colonne
            //dans laquelle on veut mettre la valeur.
     
            values.put(COL_TYPE, viandes.getType());
            values.put(COL_ETAT, viandes.getEtat());
            values.put(COL_ENDROIT, viandes.getEndroit());
            values.put(COL_NOMBRE, viandes.getNombre());
     
            //On insere l'objet dans la BDD via le ContentValues
            return bdd.insert(TABLE_VIANDES, null, values);
        }
     
        public int upDateViandes(int id, Viandes viandes)
        {
            // la mise a jour de la viande dans la BDD fonctionne plus ou moins
            //comme une insertion
            // Il faut simplement preciser quelle viande il faut mettre a jour
            // grace a l'ID
     
            ContentValues values = new ContentValues();
            values.put(COL_TYPE, viandes.getType());
            values.put(COL_ETAT, viandes.getEtat());
            values.put(COL_ENDROIT, viandes.getEndroit());
            values.put(COL_NOMBRE, viandes.getNombre());
            return bdd.update(TABLE_VIANDES, values, COL_ID + " = " + id, null);
        }
     
        public Viandes cursorToViandes(Cursor cursor)    // transforme un cursor en une viande
        {
            //Si aucun element n'a ete trouve dans la requete, on renvoie null.
            if (cursor.getCount() == 0)
                return null;
     
            //Sinon on se place sur le premier element
            cursor.moveToFirst();
            //On cree  une viande
            Viandes viandes = new Viandes();
     
            //On lui affecte toutes les infos grace aux infos contenues dans le Cursor
            viandes.setId(cursor.getInt(NUM_COL_ID));
            viandes.setType(cursor.getString(NUM_COL_TYPE));
            viandes.setEtat(cursor.getString(NUM_COL_ETAT));
            viandes.setNombre(cursor.getString(NUM_COL_NOMBRE));
            viandes.setEndroit(cursor.getString(NUM_COL_ENDROIT));
     
            //On ferme le Cursor
            cursor.close();
     
            //On retourne la viande
            return viandes;
        }
     
        public int removeViandesWithdID(int id)
        {
            //suppression d'une viande de la BDD grace a l'ID
            return bdd.delete(TABLE_VIANDES, COL_ID + " = " + id, null);
        }
     
        public Cursor GetAll()
        {
     
            Cursor data = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                                    COL_NOMBRE, COL_ENDROIT}, COL_TYPE + " LIKE \"" + titre + " \"",
                                    null, null,  null, null);
     
                            return data;
        }
     
     
        public Cursor crerColonne()
        {
            return bdd.rawQuery("SELECT ID as_id, TYPE FROM table_viandes", null);
        }
     
    }
    Fichier Affichage1

    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
    package com.example.rapidego.frigo1;
     
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter;
    import android.database.Cursor;
     
    public class Affichage1 extends ActionBarActivity {
     
        public Affichage1() {
        }
     
        @Override
        public String toString() {
            return "Affichage1{}";
        }
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_affichage1);
     
            //Creation d'une instance de la classe GestionBDD(creer la Bdd)
            GestionBDD bddViandes = new GestionBDD(this);
     
            //On ouvre la base de donnees
            bddViandes.open();
     
            //Creation d'une ligne pour une viande
            Viandes decoupe = new Viandes(" boeuf", "cote", "4", "BG");
     
            // insertion d'une viande
            bddViandes.insertViandes(decoupe);
     
            bddViandes.crerColonne(); // appel méthode pour créer l'alias _id
     
            //recuperation du listview present dans mon IHM
            ListView lv = (ListView) findViewById(R.id.Afficheliste);
     
            Cursor data = bddViandes.GetAll();  //appel méthode
     
            SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, data,
                            new  String[] {"TYPE"}, new int[] {android.R.id.text1});
     
            lv.setAdapter(adapter);
     
        }   //*****************fin de la méthode onCreate*************************************
     
        //********************************partie menu*****************************
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_affichage1, menu);
            return true;
        }
     
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
     
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
     
            return super.onOptionsItemSelected(item);
        }
    }
    Message d'erreur engendré

    02-22 23:18:44.926 13870-13870/com.example.rapidego.frigo1 E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rapidego.frigo1/com.example.rapidego.frigo1.Affichage1}: java.lang.IllegalArgumentException: column '_id' does not exist
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3844)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
    at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
    at android.widget.CursorAdapter.init(CursorAdapter.java:115)
    at android.widget.CursorAdapter.<init>(CursorAdapter.java:94)
    at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:47)
    at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:84)
    at com.example.rapidego.frigo1.Affichage1.onCreate(Affichage1.java:49)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)*
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)*
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)*
    at android.os.Handler.dispatchMessage(Handler.java:99)*
    at android.os.Looper.loop(Looper.java:130)*
    at android.app.ActivityThread.main(ActivityThread.java:3844)*
    at java.lang.reflect.Method.invokeNative(Native Method)*
    at java.lang.reflect.Method.invoke(Method.java:507)*

    Même si je neutralise la partie de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public Cursor crerColonne()
        {
            return bdd.rawQuery("SELECT ID as_id, TYPE FROM table_viandes", null);
        }
    L'erreur reste la même, que j'applique cette méthode ou pas
    cela ne change rien : column '_id' does not exist

    Merci pour ton aide

  12. #32
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    On tourne en rond : il faut qu'il y ait une colonne _id dans les curseurs pour qu'un CursorAdapter fonctionne. Ce n'est pas le cas de getAll() ! mais c'est le cas de crerColonne() ! Ce qui donne :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            //recuperation du listview present dans mon IHM
            ListView lv = (ListView) findViewById(R.id.Afficheliste);
     
            Cursor data = bddViandes.crerColonne();  //appel méthode
     
            SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, data,
                            new  String[] {"TYPE"}, new int[] {android.R.id.text1});
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  13. #33
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    On tourne en rond : il faut qu'il y ait une colonne _id dans les curseurs pour qu'un CursorAdapter fonctionne. Ce n'est pas le cas de getAll() ! mais c'est le cas de crerColonne() ! Ce qui donne :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            //recuperation du listview present dans mon IHM
            ListView lv = (ListView) findViewById(R.id.Afficheliste);
     
            Cursor data = bddViandes.crerColonne();  //appel méthode
     
            SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, data,
                            new  String[] {"TYPE"}, new int[] {android.R.id.text1});
    Bonsoir,

    J'ai fait les modifs mais on continu de tourner en rond , c'est le cercle infernal!
    Toujours la même erreur column '_id' does not exist

    voici le code de crerColonne avec rawQuery qui se trouve dans GestionBDD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Cursor crerColonne()
        {
             return bdd.rawQuery("SELECT ID as_id, TYPE FROM table_viandes", null);
     
        }
    Voici l'appel méthode qui se trouve dans Affichage1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Cursor data = bddViandes.crerColonne(); // appel méthode pour créer l'alias _id
    Cordialement et merci

  14. #34
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Tu ne sais pas recopier !
    (il y a un espace après le 'as' qui veut dire 'alias')
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  15. #35
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Tu ne sais pas recopier !
    (il y a un espace après le 'as' qui veut dire 'alias')
    Bonsoir et un grand infiniment merci

    J'ai enfin fini de tourner en rond et je vais pouvoir continuer
    je te remercie de m'avoir conseillé et d'avoir eu la patience pour m'aider.

    Je n'ai vraiment pas remarqué cet espace quelle étourderie!!!

    Cordialement et Merci pour tout.

    A plus rapidego

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. Réponses: 1
    Dernier message: 24/06/2010, 18h31
  3. Réponses: 1
    Dernier message: 27/05/2010, 17h22
  4. Réponses: 2
    Dernier message: 04/05/2007, 15h13
  5. créer une boulce pour lire dans une base de donnéé MySQL
    Par pierrot10 dans le forum Administration
    Réponses: 1
    Dernier message: 26/07/2006, 14h21

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