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

  1. #1
    Membre du Club
    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
    Points : 59
    Points
    59
    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 éclairé

    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
    Points : 690
    Points
    690
    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 du Club
    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
    Points : 59
    Points
    59
    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 du Club
    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
    Points : 59
    Points
    59
    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 régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    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 du Club
    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
    Points : 59
    Points
    59
    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)

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    j'ai regardé rapidement ton code et à première vu, je ne trouve pas d'erreur...

    Juste pour savoir aurais tu manipulé ta base (juste l'ouvrir par exemple) avant de l'avoir finalisé? (si c'est ça, change la version de ta bd, ou vide les données de ton appli.)

    (si c'est pas ça, je copierais ce soir ton code pour voir si j'arrive a reproduire ton erreur)

    édite: Tu récupère les valeurs de tes editetext dans le oncreate? (tu auras uniquement des valeurs vide...)

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Le problème vient peut-être aussi du fait que tu ai modifié la base lors de ton développement. Par exemple, si tu installes l'application, tu créé la base, tu retournes au développement , tu ajoutes une colonne, puis que tu réinstalle l'application --> la nouvelle colonne ne sera pas présente si tu n'a pas incrémenté le numéro de version de la base.

    Un moyen simple est de supprimer l'application de ton smartphone et de la réinstaller.

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    Par défaut
    Bonjour
    Serait-il possible d'avoir la description de de ta tables en utilisant cette commande depuis android-sdk-windows\tools :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    adb shell
    # sqlite3 /data/data/com.tonpackage/databases/tadbname

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    Par défaut
    et je crois qu'il faut ajouter des espaces dans onUpdate supprimer ";" dans la commande de création et de mise à jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
           db.execSQL("DROP TABLE IF EXISTS" + TABLE_CLIENT + ";");
        onCreate(db); }

  11. #11
    Membre éclairé

    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
    Points : 690
    Points
    690
    Par défaut
    Citation Envoyé par Simon MARQUIS Voir le message
    Le problème vient peut-être aussi du fait que tu ai modifié la base lors de ton développement. Par exemple, si tu installes l'application, tu créé la base, tu retournes au développement , tu ajoutes une colonne, puis que tu réinstalle l'application --> la nouvelle colonne ne sera pas présente si tu n'a pas incrémenté le numéro de version de la base.

    Un moyen simple est de supprimer l'application de ton smartphone et de la réinstaller.
    Je suis d'accords avec ce que dit @Simon MARQUIS, ce probléme arrive lorsqu'on développe une application qu'on modifie la base de données entre temps.
    « 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

  12. #12
    Membre du Club
    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
    Points : 59
    Points
    59
    Par défaut
    Merci pour toutes vos réponses
    En effet, j'avais bien continuer de coder, et j'ai du modifier la base une où 2 fois.. L'erreur ne s'affiche plus, merci beaucoup à tous!

    @narion : Concernant l'EditText, faut que je le récupère avant le onCreate?

    @galopex : C'est quel invité de commande qu'il fallait utiliser? :S

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par Pepito39 Voir le message
    @narion : Concernant l'EditText, faut que je le récupère avant le onCreate?

    dans ton code, je dirais plutôt dans l'écouteur de ton bouton dans le onClick?

    dans le onCreate seul, tu fais un .getText() uniquement lorsque l'activité est créé (lancement, rotation.)

  14. #14
    Membre du Club
    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
    Points : 59
    Points
    59
    Par défaut
    D'accord, je vois, merci bien

  15. #15
    Membre du Club
    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
    Points : 59
    Points
    59
    Par défaut
    Citation:
    Envoyé par Pepito39 Voir le message
    @narion : Concernant l'EditText, faut que je le récupère avant le onCreate?

    dans ton code, je dirais plutôt dans l'écouteur de ton bouton dans le onClick?

    dans le onCreate seul, tu fais un .getText() uniquement lorsque l'activité est créé (lancement, rotation.)
    Quand je récupère les EditText dans le Listener, ça fait planter mon appli..
    Mais si je les récupère comme avant, ça à l'air de fonctionner apparemment. Enfin, faut que je fasse d'autres tests ^^'

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    tu as quoi comme message d'erreur?

    Dans ton onClick, fait des Log pour vérifier quel valeur tu récupère (et donc que tu passe a ta bd).

  17. #17
    Membre du Club
    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
    Points : 59
    Points
    59
    Par défaut
    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
    06-07 17:41:27.283: E/AndroidRuntime(608): FATAL EXCEPTION: main
    06-07 17:41:27.283: E/AndroidRuntime(608): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.cartedefidelite/com.example.cartedefidelite.AjoutActivity}: java.lang.NullPointerException
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.ActivityThread.access$600(ActivityThread.java:122)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.os.Looper.loop(Looper.java:137)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.ActivityThread.main(ActivityThread.java:4340)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at java.lang.reflect.Method.invokeNative(Native Method)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at java.lang.reflect.Method.invoke(Method.java:511)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at dalvik.system.NativeStart.main(Native Method)
    06-07 17:41:27.283: E/AndroidRuntime(608): Caused by: java.lang.NullPointerException
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at com.example.cartedefidelite.AjoutActivity.onCreate(AjoutActivity.java:37)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.Activity.performCreate(Activity.java:4465)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
    06-07 17:41:27.283: E/AndroidRuntime(608): 	... 11 more
    J'ai cette erreur, et l'application s'arrête..

    Euh je débute, et j'ai jamais fait de Log.. ^^'
    Je vais voir vite fait comment faut faire et je te redis

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    il y a quoi à la ligne 37? (donne ton onCreate pour cette erreur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    06-07 17:41:27.283: E/AndroidRuntime(608): 	at com.example.cartedefidelite.AjoutActivity.onCreate(AjoutActivity.java:37)

  19. #19
    Membre du Club
    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
    Points : 59
    Points
    59
    Par défaut
    Alors, la ligne 37, il me semble que c'est celle là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strNom=nom.getText().toString();
    Je renvoie le onCreate() si jamais :
    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
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.formulaire_ajout);
     
            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);
    	}

  20. #20
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    on c'est peut être mal compris, c'est les getText() (récupérer le contenu des editText) que tu devrais faire dans le onclick. Les édites texte sont bien.

    en gros tu devrais avoir.

    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
    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);
     
     
            ajouter.setOnClickListener(ajouterListener);
     }
            private OnClickListener ajouterListener = new OnClickListener() {
             public void onClick(View v){
              if(v==ajouter)
              {
    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");
            }
              clibdd.open();
              client cli = new client(strNom, strPrenom, strAdresse, strCp, strVille, strMail, strTel, ipizzaencours, ipizzatotal);
              clibdd.insertClient(cli);
              clibdd.close();
              }
             }
            };

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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