Android, requête qui ne marche pas..

Résolu/Fermé
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 - 1 juin 2013 à 16:44
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 - 8 juin 2013 à 11:46
Bonjour,

J'ai une requête d'insertion, mais elle ne fonctionne pas!
Le logcat indique qu'il ne trouve pas une colonne, et montre la requête mais les champs du insert sont pas dans le bon ordre! :O

Voici la base de donnée :
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 fonction pour insérer un client:
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);
	}


La déclaration des COL_ATTRIBUT :
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;


L'endroit où j'essaye d'insérer un client :
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();
        		}
        	}
        };


Et enfin l'erreur dans le logcat :
sqlite returned: error code=1, msg= table client has no column name nbpizzatotal
Error inserting prenom= mail= nbpizzatotal=0 tel= nbpizzaencours=0 ville= nom=
table client has no column name nbpizzatotal, while compiling: INSERT INTO client(prenom,mail,cp,adresse,nbpizzatotal,tel,nbpizzaencours,ville,nom) values (?,?,?,?,?,?,?,?,?)...

Je comprends pas pourquoi, et un peu d'aide ne serait pas de refus! :)
Merci d'avance! :)
A voir également:

1 réponse

Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 1
8 juin 2013 à 11:46
Finalement c'est bon, le code est bon, mais suffisait de désinstaller l'appli sur l'émulateur car la base de donnée avait été modifié entre temps.
0