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 :

Manipuler une base de données SQLite


Sujet :

Android

  1. #1
    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 Manipuler une base de données SQLite
    Bonsoir,

    Je me suis inspiré de la base de données "tuto mobile" et je l'ai adapté à mon besoin.

    J'ai l'intention de dev une application pour gérer mon congélateur modèle bahut.

    Le problème c'est que je n'arrive pas à interagir avec ma bd SQLite copiée d'après tuto mobile.

    C'est au moment de l'ouverture de Base de Données que l'appli plante.

    Quelqu'un pourrait-il vérifier mon code et le corriger Merci.

    Ma classe Viandes


    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
     
    package com.example.rapidego.frigo1;
     
    /**
     * Created by rapidego on 16/06/2015.
     */
    public class Viandes
    {
        //declare les variables
        private  int id;
        private String type;
        private String etat;
        private String nombre;
        private String endroit;
     
        //constructeur vide
        public Viandes(){}
     
        //constructeur rempli
        public Viandes(String type, String etat,  String nombre, String endroit)
        {
            this.type = type;
            this.etat = etat;
            this.nombre = nombre;
            this.endroit = endroit;
     
     
        }
     
        //les différents getter et setter
        public int getId() {return id;}
        public void setId(int id) {this.id = id;}
     
        public String getType() {return type;}
        public void setType(String type) {this.type = type;}
     
        public String getEtat() {return etat;}
        public void  setEtat(String etat) {this.etat = etat;}
     
        public String getNombre() {return nombre;}
        public void setNombre(String nombre) {this.nombre = nombre;}
     
        public String getEndroit() {return  endroit;}
        public void setEndroit(String endroit) {this.endroit = endroit;}
     
        public String toString()
        {
            return "ID :" + id + "\nTYPE :" + type + "\nENDROIT :" + endroit +
                    "\nETAT :" + etat + "\nNOMBRE :" + nombre;
        }
    }
    Ma classe MaBaseSQLite

    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
     
    package com.example.rapidego.frigo1;
     
    /**
     * Created by rapidego on 16/06/2015.
     */
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
     
    public class MaBaseSQLite extends SQLiteOpenHelper
    {
     
        //variable table
        private static final String TABLE_VIANDES = "table_viandes";
     
        //variables des colonnes
        public static final String COL_ID = "ID";
        public static final String COL_TYPE = "TYPE";
        public static final String COL_ETAT = "ETAT";
        public static final String COL_COMBIEN = "COMBIEN";
        public static final String COL_ENDROIT = "ENDROIT";
     
     
        //variable de la requete ecrite
        private static final String CREATE_BDD = "CREATE TABLE" + TABLE_VIANDES + "(" +
                COL_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TYPE + "TEXT NOT NULL, "
                + COL_ETAT + "TEXT NOT NULL, " + COL_COMBIEN + "TEXT NOT NULL, " + COL_ENDROIT +
                "TEXT NOT NULL), ;";
     
        //constructeur
        public MaBaseSQLite(Context context, String name, CursorFactory factory, int version)
        {
            super(context, name, factory, version);
        }
     
     
     
        @Override
        public void onCreate(SQLiteDatabase db) //paremetre db (objet db)
        {
            // on cree la table a partir de la requete ecrite dans la variable CREATE_BDD
            db.execSQL(CREATE_BDD);
        }
     
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            //On peut faire ce que l'on veut ici
            //je choisi de supprimper la table et de la recreer
     
            // comme cela lorsque je change la version les id repartent de zero
     
            //suppression
            db.execSQL("DROP TABLE" + TABLE_VIANDES + ";");
     
            //recreer la table
            onCreate(db);
     
        }
     
    }
    Ma base 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
     
    package com.example.rapidego.frigo1;
     
    /**
     * Created by rapidego on 16/06/2015.
     */
    import android.content.ContentValues;
    import android.content.Context;
    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_COMBIEN = "COMBIEN";
        private static final int NUM_COL_COMBIEN = 3;
        private static final String COL_ENDROIT = "ENDROIT";
        private static final int NUM_COL_ENDROIT = 4;
     
        private SQLiteDatabase bdd; // Declare objet bdd
        private MaBaseSQLite maBaseSQLite; // Declare objet maBaseSQLite
     
        //Constructeur rempli
        public GestionBDD(Context context)
        {
            //on cree la BDD et sa table
            maBaseSQLite = new MaBaseSQLite(context, NOM_BDD, null, VERSION_BDD);
        }
     
        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_COMBIEN, viandes.getNombre());
            values.put(COL_ENDROIT, viandes.getEndroit());
     
            //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_COMBIEN, viandes.getNombre());
            values.put(COL_ENDROIT, viandes.getEndroit());
            return bdd.update(TABLE_VIANDES, values, COL_ID + " = " + id, null);
        }
     
        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 Viandes getViandesWithTitre(String titre)
        {
            //Recupere dans un cursor les valeurs correspondant à une viandes contenu
            // dans la BDD (ici on selectionne la viande grace a son titre)
            Cursor c = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                            COL_COMBIEN, COL_ENDROIT}, COL_TYPE + " LIKE\"" + titre + "\"", null, null,
                    null, null);
            return  cursorToViandes(c);
        }
     
        //Cette methode permet de convertire un cursor en une viande
        private Viandes cursorToViandes(Cursor c)
        {
            //Si aucun element n'a ete trouve dans la requete, on renvoie null.
            if (c.getCount() == 0)
                return null;
     
            //Sinon on se place sur le premier element
            c.moveToFirst();
            //On cree  une viande
            Viandes viandes = new Viandes();
     
            //On lui affecte toutes les infos grace aux infos contenues dans le Cursor
            viandes.setId(c.getInt(NUM_COL_ID));
            viandes.setType(c.getString(NUM_COL_TYPE));
            viandes.setEtat(c.getString(NUM_COL_ETAT));
            viandes.setNombre(c.getString(NUM_COL_COMBIEN));
            viandes.setEndroit(c.getString(NUM_COL_ENDROIT));
     
            //On ferme le Cursor
            c.close();
     
            //On retourne le viande
            return viandes;
     
     
        }
     
    }
    Ma classe MainActivity

    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
     
    package com.example.rapidego.frigo1;
     
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.widget.Toast;
    import android.view.Menu;
    import android.view.MenuItem;
     
     
    public class MainActivity extends ActionBarActivity
    {
     
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            //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");
     
            //creation et insertion d'une viande
            bddViandes.insertViandes(decoupe);
     
             /*Pour verifier si on a bien creer notre decoupe dans la BDD
            *on extrait la decoupe de la BDD grace au titre de la decoupe
            que l'on a creer precedemment */
            Viandes decoupePourBdd = bddViandes.getViandesWithTitre(decoupe.getType());
     
            //Si une decoupe est retournee (donc si la decoupe a bien ete ajoutee a la Bdd
            //ici on affiche les infos de la decoupe dans un toast
             if (decoupePourBdd != null)
                {
                     Toast.makeText(this, decoupePourBdd.toString(), Toast.LENGTH_LONG).show();
                }
        }
     
        //*********************en attente**********************
     
        //Creation d'une instance de la classe GestionBDD(creer la Bdd)
        // final 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");
        // bddViandes.insertViandes(decoupe);
             /*Pour verifier si on a bien creer notre decoupe dans la BDD
            *on extrait la decoupe de la BDD grace au titre de la decoupe
            que l'on a creer precedemment */
        //Viandes decoupePourBdd = bddViandes.getViandesWithTitre(decoupe.getType());
        //Si une decoupe est retournee (donc si la decoupe a bien ete ajoutee a la Bdd
        //ici on affiche les infos de la decoupe dans un toast
        // if (decoupePourBdd != null)
        // {
        //     Toast.makeText(this, decoupePourBdd.toString(), Toast.LENGTH_LONG).show();
        // }
     
        //*******************en attente***********************
     
        //appel du bouton creer dans activity_main.xml
      //  boutonCreer = (Button)findViewById(R.id.creer);
     
        //mise en place d'un ecouteur
      //  boutonCreer.setOnClickListener(new OnClickListener()
    //{
      // @Override
      //  public void onClick(View view)
       // {
     
       // }
    //});
     
     
     
     
     
    //************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_main, 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);
        }
    }

    Mon fichier Manifest


    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.rapidego.frigo1" >
     
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
     
        </application>
     
    </manifest>
    Comme mon code plante j'ai laissé en attente une partie du listing de la classe MainActivity.

    //On ouvre la base de donnees
    bddViandes.open();
    C'est quand je lance cette commande open que les choses se gâtent.

    Merci de bien vouloir me conseiller.

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Salut,

    Poste le message d'erreur qui est affiché dans le logcat stp.

    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    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 MasterMbg Voir le message
    Salut,

    Poste le message d'erreur qui est affiché dans le logcat stp.

    Christian,
    Bonjour voila mon logcat

    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
     
    06-23 14:28:24.737    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve interface method 13443: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;
    06-23 14:28:24.767    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 13344: Landroid/view/ViewGroup;.onWindowSystemUiVisibilityChanged (I)V
    06-23 14:28:24.777    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 13775: Landroid/widget/FrameLayout;.jumpDrawablesToCurrentState ()V
    06-23 14:28:24.777    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/view/ActionMode;)
    06-23 14:28:24.797    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 13331: Landroid/view/ViewGroup;.onHoverEvent (Landroid/view/MotionEvent;)Z
    06-23 14:28:24.797    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 13340: Landroid/view/ViewGroup;.onRtlPropertiesChanged (I)V
    06-23 14:28:24.807    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 410: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
    06-23 14:28:24.807    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 432: Landroid/content/res/TypedArray;.getType (I)I
    06-23 14:28:24.817    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 13489: Landroid/view/accessibility/AccessibilityEvent;.setSource (Landroid/view/View;)V
    06-23 14:28:24.817    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 10512: Landroid/support/v7/internal/widget/AbsActionBarView;.onInitializeAccessibilityEvent (Landroid/view/accessibility
     
    /AccessibilityEvent;)V
    06-23 14:28:24.847    3925-3925/com.example.rapidego.frigo1 E/Database﹕ Failure 1 (near "TABLEtable_viandes": syntax error) on 0x3106b8 when preparing 'CREATE TABLEtable_viandes(IDINTEGER PRIMARY KEY AUTOINCREMENT, TYPETEXT NOT NULL, ETATTEXT NOT NULL, COMBIENTEXT NOT NULL, ENDROITTEXT NOT NULL), ;'.
    06-23 14:28:24.847    3925-3925/com.example.rapidego.frigo1 W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40018560)
    06-23 14:28:24.847    3925-3925/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.MainActivity}: android.database.sqlite.SQLiteException: near "TABLEtable_viandes": syntax error: CREATE TABLEtable_viandes(IDINTEGER PRIMARY KEY AUTOINCREMENT, TYPETEXT NOT NULL, ETATTEXT NOT NULL, COMBIENTEXT NOT NULL, ENDROITTEXT NOT NULL), ;
                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 "TABLEtable_viandes": syntax error: CREATE TABLEtable_viandes(IDINTEGER PRIMARY KEY AUTOINCREMENT, TYPETEXT NOT NULL, ETATTEXT NOT NULL, COMBIENTEXT NOT NULL, ENDROITTEXT NOT NULL), ;
     
    at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
                at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1772)
                at com.example.rapidego.frigo1.MaBaseSQLite.onCreate(MaBaseSQLite.java:43)
                at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:126)
                at com.example.rapidego.frigo1.GestionBDD.open(GestionBDD.java:44)
                at com.example.rapidego.frigo1.MainActivity.onCreate(MainActivity.java:23)
                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)
    Merci pour ton aide

    Aplus rapidego

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut Erreur de syntaxe dans la requête
    D'après le logcat il y a une erreur de syntaxe dans la construction de la requête de création de la table. Le problème se situe ici "TABLEtable_viandes". Essaie avec "TABLE table_viandes" à la place.

    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    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
    Il manque des espaces dans
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    final String CREATE_BDD = "CREATE TABLE" + 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. #6
    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
    Il manque des espaces dans
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    final String CREATE_BDD = "CREATE TABLE" + TABLE_VIANDES + "(" + ...
    Bonsoir

    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
     
    public class MaBaseSQLite extends SQLiteOpenHelper
    {
     
        //variable table
        private static final String TABLE_VIANDES = "table_viandes";
     
        //variables des colonnes
        public static final String COL_ID = "ID";
        public static final String COL_TYPE = "TYPE";
        public static final String COL_ETAT = "ETAT";
        public static final String COL_COMBIEN = "COMBIEN";
        public static final String COL_ENDROIT = "ENDROIT";
     
     
        //variable de la requete ecrite
        private static final String CREATE_BDD = " CREATE TABLE " + TABLE_VIANDES + "(" +
                COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TYPE + " TEXT NOT NULL, "
                + COL_ETAT + " TEXT NOT NULL, " + COL_COMBIEN + " TEXT NOT NULL, " + COL_ENDROIT +
                " TEXT NOT NULL), ;";
     
        //constructeur
        public MaBaseSQLite(Context context, String name, CursorFactory factory, int version)
        {
            super(context, name, factory, version);
        }
     
     
     
        @Override
        public void onCreate(SQLiteDatabase db) //paremetre db (objet db)
        {
            // on cree la table a partir de la requete ecrite dans la variable CREATE_BDD
            db.execSQL(CREATE_BDD);
        }
     
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            //On peut faire ce que l'on veut ici
            //je choisi de supprimper la table et de la recreer
     
            // comme cela lorsque je change la version les id repartent de zero
     
            //suppression
            db.execSQL("DROP TABLE" + TABLE_VIANDES + ";");
     
            //recreer la table
            onCreate(db);
     
        }
    J'ai vérifié mon code j'ai partout des espaces.

    J'ai trouvé l'erreur il y avait une virgule de trop ligne 20 du listing ci-dessus au dernier " TEXT NOT NULL), ;";

    J'ai corrigé " TEXT NOT NULL) ;";
    et le programe se lance

    En tout cas un grand merci à tous les deux pour les bons conseils.
    Cela fait un moment que j’étais dessus et grâce à vous j'ai enfin trouvé à l'avenir il faudra faire attention à mes "copier coller"

    Je vais pouvoir continuer en ajoutant listview et boutons etc...

    encore merci et à +++ rapidego

  7. #7
    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
    Il manques un espace avant la parenthèse ouvrante. Je ne suis même pas allé plus loin.
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer une base de données sqlite
    Par Watier_53 dans le forum Android
    Réponses: 1
    Dernier message: 05/01/2011, 08h03
  2. Manipuler une base de donnée à l'aide des Codes Pascal
    Par batonnier 5 dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/08/2010, 12h44
  3. Réponses: 1
    Dernier message: 25/08/2009, 19h22
  4. Réponses: 2
    Dernier message: 05/07/2009, 18h20
  5. Peut-on manipuler une base de donnée oracle sans oracle
    Par sillycoder dans le forum Oracle
    Réponses: 8
    Dernier message: 19/01/2006, 09h00

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