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 :

[SQLite] Problème avec une requête


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Par défaut [SQLite] Problème avec une requête
    Bonjour à tous,
    Voilà, je débute sous android et, je souhaite ajouter un nouveau client dans mon application, mais l'erreur suivante apparaît dans le logcat :
    06-05 15:05:36.472: E/SQLiteDatabase(654): Error inserting prenom= mail= cp= adresse= nbpizzatotal=0 tel= nbpizzaencours=0 ville= nom=
    06-05 15:05:36.472: E/SQLiteDatabase(654): android.database.sqlite.SQLiteException: table client has no column named nbpizzatotal: , while compiling: INSERT INTO client(prenom,mail,cp,adresse,nbpizzatotal,tel,nbpizzaencours,ville,nom) VALUES (?,?,?,?,?,?,?,?,?)
    Je ne vois pas pourquoi, en plus les champs dans la requête de l'erreur sont pas dans le même ordre que ma requête...
    Voici la classe où je créé ma BDD :
    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
    public class DatabaseHandler extends SQLiteOpenHelper {
       public static final String TABLE_CLIENT ="client";
       public static final String COL_ID = "id";
       public static final String COL_NOM = "nom";
       public static final String COL_PRENOM = "prenom";
       public static final String COL_ADRESSE = "adresse";
       public static final String COL_CP = "cp";
       public static final String COL_VILLE = "ville";
       public static final String COL_MAIL = "mail";
       public static final String COL_TEL = "tel";
       public static final String COL_PIZZAENCOURS = "nbpizzaencours";
       public static final String COL_PIZZATOTAL = "nbpizzatotal";
     
       public static final String CREATE_BDD = 
        "CREATE TABLE " + TABLE_CLIENT + " (" +
           COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
           COL_NOM + " TEXT NOT NULL, " +
           COL_PRENOM + " TEXT NOT NULL, " +
           COL_ADRESSE + " TEXT, " +
           COL_CP + " TEXT, " +
           COL_VILLE + " TEXT, " +
           COL_MAIL + " TEXT, " +
           COL_TEL + " TEXT, " +
           COL_PIZZAENCOURS + " INTEGER DEFAULT 0, "+
           COL_PIZZATOTAL + "INTEGER DEFAULT 0);";
     
       public DatabaseHandler(Context context, String name, CursorFactory factory, int version) {
         super(context, name, factory, version);
       }
     
       public void onCreate(SQLiteDatabase db) {
         db.execSQL(CREATE_BDD);
       }
       public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
           db.execSQL("DROP TABLE IF EXISTS" + TABLE_CLIENT + ";");
        onCreate(db); }
     
     }

    La classe où je définit ma BDD :

    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
    public class clientBDD {
     
     private static final int VERSION_BDD=1;
     private static final String NOM_BDD="client.db";
     
     private static final String TABLE_CLIENT="client";
     public static final String COL_ID = "id";
     public static int NUM_COL_ID = 0;
     public static final String COL_NOM = "nom";
     public static int NUM_COL_NOM = 1;
     public static final String COL_PRENOM = "prenom";
     public static int NUM_COL_PRENOM = 2;
     public static final String COL_ADRESSE = "adresse";
     public static int NUM_COL_ADRESSE = 3;
     public static final String COL_CP = "cp";
     public static int NUM_COL_CP = 4;
     public static final String COL_VILLE = "ville";
     public static int NUM_COL_VILLE = 5;
     public static final String COL_MAIL = "mail";
     public static int NUM_COL_MAIL = 6;
     public static final String COL_TEL = "tel";
     public static int NUM_COL_TEL = 7;
     public static final String COL_PIZZAENCOURS = "nbpizzaencours";
     public static int NUM_COL_PIZZAENCOURS = 8;
     public static final String COL_PIZZATOTAL = "nbpizzatotal";
     public static int NUM_COL_PIZZATOTAL = 9;
     
     private SQLiteDatabase bdd;
     private DatabaseHandler dbH;
     
     public clientBDD(Context context){
      dbH = new DatabaseHandler(context, NOM_BDD, null, VERSION_BDD);
     }
     public void open(){
      bdd= dbH.getWritableDatabase();
     }
     public void close(){
      bdd.close();
     }
     public SQLiteDatabase getBDD(){
      return bdd;
     }
     public long insertClient(client cli){
      ContentValues values = new ContentValues();
      values.put(COL_NOM, cli.getNom());
      values.put(COL_PRENOM, cli.getPrenom());
      values.put(COL_ADRESSE, cli.getAdresse());
      values.put(COL_CP, cli.getCp());
      values.put(COL_VILLE, cli.getVille());
      values.put(COL_MAIL, cli.getMail());
      values.put(COL_TEL, cli.getTel());
      values.put(COL_PIZZAENCOURS, cli.getNbpizzaencours());
      values.put(COL_PIZZATOTAL, cli.getNbpizzatotal());
      return bdd.insert(TABLE_CLIENT, null, values);
     }
     
     public int updateClient(int id, client cli){
      ContentValues values = new ContentValues();
      values.put(COL_NOM, cli.getNom());
      values.put(COL_PRENOM, cli.getPrenom());
      values.put(COL_ADRESSE, cli.getAdresse());
      values.put(COL_CP, cli.getCp());
      values.put(COL_VILLE, cli.getVille());
      values.put(COL_MAIL, cli.getMail());
      values.put(COL_TEL, cli.getTel());
      values.put(COL_PIZZAENCOURS, cli.getNbpizzaencours());
      values.put(COL_PIZZATOTAL, cli.getNbpizzatotal());
      return bdd.update(TABLE_CLIENT, values, COL_ID +" = "+id, null);
     }
     
     public int removeClientwithID(int id, client cli){
      return bdd.delete(TABLE_CLIENT, COL_ID+ " = "+id, null);
     }
     public client getClientwithNom(String nom){
      Cursor c = bdd.query(TABLE_CLIENT, new String[] {COL_ID, COL_NOM, COL_PRENOM, COL_ADRESSE, COL_CP, COL_VILLE, COL_MAIL, COL_TEL, COL_PIZZAENCOURS, COL_PIZZATOTAL}, COL_NOM + " LIKE \"" + nom +"\"", null, null, null, null);
      return cursorToClient(c);
     }
     public client cursorToClient(Cursor c){
      if(c.getCount()== 0)
      {
       return null;
      }
      c.moveToFirst();
      client cli = new client();
      cli.setId(c.getInt(NUM_COL_ID));
      cli.setNom(c.getString(NUM_COL_NOM));
      cli.setPrenom(c.getString(NUM_COL_PRENOM));
      cli.setAdresse(c.getString(NUM_COL_ADRESSE));
      cli.setCp(c.getString(NUM_COL_CP));
      cli.setVille(c.getString(NUM_COL_VILLE));
      cli.setMail(c.getString(NUM_COL_MAIL));
      cli.setTel(c.getString(NUM_COL_TEL));
      cli.setNbpizzaencours(c.getInt(NUM_COL_PIZZAENCOURS));
      cli.setNbpizzatotal(c.getInt(NUM_COL_PIZZATOTAL));
      c.close();
      return cli;
     
     
     }

    Et la partie de code où j'essaie d'insérer un client :

    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
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.formulaire_ajout);
     
     
     
            nom = (EditText)findViewById(R.id.EtNom);
            prenom = (EditText)findViewById(R.id.EtPrenom);
            adresse = (EditText)findViewById(R.id.EtAdresse);
            cp = (EditText)findViewById(R.id.EtCp);
            ville = (EditText)findViewById(R.id.EtVille);
            mail = (EditText)findViewById(R.id.EtMail);
            tel = (EditText)findViewById(R.id.EtTel);
            ajouter=(Button)findViewById(R.id.ajouter);
            pizzaencours = (EditText)findViewById(R.id.EtNbpizza);
            pizzatotal = (EditText)findViewById(R.id.EtTotalpizza);
            strNom=nom.getText().toString();
            strPrenom=prenom.getText().toString();
            strAdresse=adresse.getText().toString();
            strCp=cp.getText().toString();
            strVille=ville.getText().toString();
            strMail=mail.getText().toString();
            strTel=tel.getText().toString();
            try{
            ipizzaencours=Integer.parseInt(pizzaencours.getText().toString());
            ipizzatotal=Integer.parseInt(pizzatotal.getText().toString());
            }catch(NumberFormatException e){
             System.err.println("Pas un entier");
            }
     
            ajouter.setOnClickListener(ajouterListener);
     }
            private OnClickListener ajouterListener = new OnClickListener() {
             public void onClick(View v){
              if(v==ajouter)
              {
              clibdd.open();
              client cli = new client(strNom, strPrenom, strAdresse, strCp, strVille, strMail, strTel, ipizzaencours, ipizzatotal);
              clibdd.insertClient(cli);
              clibdd.close();
              }
             }
            };

    Si vous avez une solution à ma faire parvenir... ^^'
    Merci d'avance!

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Par défaut
    Bonjour,

    L'erreur te dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    06-05 15:05:36.472: E/SQLiteDatabase(654): android.database.sqlite.SQLiteException: table client has no column named nbpizzatotal: , while compiling: INSERT INTO client(prenom,mail,cp,adresse,nbpizzatotal,tel,nbpizzaencours,ville,nom) VALUES (?,?,?,?,?,?,?,?,?)
    il ne trouve pas la colonne "nbpizzatotal" dans ta table. Vérifies si ta base est bien présente ainsi de l'orthographe de ta colonne "nbpizzatotal" .

    Un outil pas mal pour visualiser une base SQLite sous firefox si tu en as besoin.

    Bon courage
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

    N'oubliez pas de consulter les FAQ Swift, Android
    Tutoriel : Développer une application multilingue sous iOS

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Par défaut
    J'ai regardé justement, et nbpizzatotal est normalement bien déclaré partout (à moins qu'une petite faute d'orthographe m'ais échappé.. ) Enfin, je vais revérifier, et merci pour le lien, ça peut en effet m'être utile

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Par défaut
    J'ai revérifié, aucune faute d'orthographe à priori..

    Je donne aussi la classe client pour info, si jamais le problème peut venir de là ^^
    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
    public class client {
     
    	private int id;
    	private String nom;
    	private String prenom;
    	private String adresse;
    	private String cp;
    	private String ville;
    	private String mail;
    	private String tel;
    	private int nbpizzaencours;
    	private int nbpizzatotal;
     
    	public client(){}
     
    	public client(String nom, String prenom, String adresse, String cp, String ville, String mail, String tel, int nbpizzaencours, int nbpizzatotal){
    		this.nom = nom;
    		this.prenom = prenom;
    		this.adresse = adresse;
    		this.cp = cp;
    		this.ville = ville;
    		this.mail = mail;
    		this.tel = tel;
    		this.nbpizzaencours = nbpizzaencours;
    		this.nbpizzatotal = nbpizzatotal;
    	}
     
    	public int getId(){
    		return id;
    	}
    	public void setId(int id){
    		this.id=id;
    	}
    	public String getNom(){
    		return nom;
    	}
    	public void setNom(String nom){
    		this.nom=nom;
    	}
    	public  String getPrenom(){
    		return prenom;
    	}
    	public void setPrenom(String prenom){
    		this.prenom=prenom;
    	}
    	public String getAdresse(){
    		return adresse;
    	}
    	public void setAdresse(String adresse){
    		this.adresse=adresse;
    	}
    	public String getCp(){
    		return cp;
    	}
    	public void setCp(String cp){
    		this.cp=cp;
    	}
    	public String getVille(){
    		return ville;
    	}
    	public void setVille(String ville){
    		this.ville=ville;
    	}
    	public String getMail(){
    		return mail;
    	}
    	public void setMail(String mail){
    		this.mail=mail;
    	}
    	public String getTel(){
    		return tel;
    	}
    	public void setTel(String tel){
    		this.tel=tel;
    	}
    	public int getNbpizzaencours(){
    		return nbpizzaencours;
    	}
    	public void setNbpizzaencours(int nbpizzaencours){
    		this.nbpizzaencours=nbpizzaencours;
    	}
    	public int getNbpizzatotal(){
    		return nbpizzatotal;
    	}
    	public void setNbpizzatotal(int nbpizzatotal){
    		this.nbpizzatotal=nbpizzatotal;
    	}
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    Bonjour
    ajoute un espace a cette position
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    COL_PIZZATOTAL + "INTEGER DEFAULT 0);";
    
    COL_PIZZATOTAL + " INTEGER DEFAULT 0);";
    je crois que c'est la cause de ton pb

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Par défaut
    Même avec l'espace, l'erreur reste la même..

    Je mets ci-dessous l'erreur en entière parce que toute à l'heure, j'en ai mis qu'une partie:
    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
    06-05 18:04:04.862: E/SQLiteDatabase(10023): Error inserting prenom= mail= cp= adresse= nbpizzatotal=0 tel= nbpizzaencours=0 ville= nom=
    06-05 18:04:04.862: E/SQLiteDatabase(10023): android.database.sqlite.SQLiteException: table client has no column named nbpizzatotal: , while compiling: INSERT INTO client(prenom,mail,cp,adresse,nbpizzatotal,tel,nbpizzaencours,ville,nom) VALUES (?,?,?,?,?,?,?,?,?)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:112)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1718)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1591)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at com.example.cartedefidelite.clientBDD.insertClient(clientBDD.java:64)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at com.example.cartedefidelite.AjoutActivity$1.onClick(AjoutActivity.java:71)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.view.View.performClick(View.java:3480)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.view.View$PerformClick.run(View.java:13983)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.os.Handler.handleCallback(Handler.java:605)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.os.Looper.loop(Looper.java:137)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at android.app.ActivityThread.main(ActivityThread.java:4340)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at java.lang.reflect.Method.invokeNative(Native Method)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at java.lang.reflect.Method.invoke(Method.java:511)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-05 18:04:04.862: E/SQLiteDatabase(10023): 	at dalvik.system.NativeStart.main(Native Method)

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

Discussions similaires

  1. [TADOQuery] Problème avec une requête
    Par yannba dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/01/2006, 13h51
  2. Problème avec une requête
    Par demonark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2005, 05h35
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 20h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 12h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29

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