Bonjour, j'ai un problème d'enregistrement dans la base sqlite, j'ai une table avec deux clé composées , voici la table en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 private static final String PLOT_CREATE =
             "CREATE TABLE "
            + TABLE_PLOT + " ("
                 + COLUMN_PLOT_NUMS + " INTEGER , "
                 + COLUMN_PLOT_NUMP + " INTEGER , "
                 + COLUMN_PLOT_ETATCP + " VARCHAR ( 5 ) , "
                 + "primary key (NUMS, NUMP),"
                 + "FOREIGN KEY(NUMS) REFERENCES STATION(NUMS) "
                     + " ); ";
Je voudrais faire un enregistrement dans 3 colonnes ( NUMS, NUMP, ETATCP) , je voudrais que le NUMP s'incremente à chaque enregistrement par rapport au NUMS choisie.
j'ai fait une methode dans une classe qui s'appelle PlotDAO pour aller cherche le dernier numero de du 'Plot' (
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
    public int getDernierNumero(int numS) {
 
        Cursor curseur;
        curseur = db.rawQuery("SELECT MAX(NUMP) FROM PLOT WHERE NUMS =" + numS, null);
 
        curseur.moveToFirst();
        int nb = curseur.getInt(0);
 
Log.d("test",nb+"");
        return nb;
    }
Ensuite j'appelle dans l'activity pour ajouter, je recherche le numero de la station choisie dans un spinner, je le passe en parametre dans la methode pour avoir le dernier numero de la station selectionnée , puis j'enregistre ce numero 'NUMS' selectionnée, j'incremente 1 le NUMP deja existant,et le bouton radio qui ne pose pas e probleme
:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
final Station selected = (Station) spinnerStations.getSelectedItem();
                        int lastNumP = plotsAcces.getDernierNumero(selected.getNumS());
                        Log.d("numero", String.valueOf(lastNumP));
 
                        int nextNumP = 0;
                        for (Plots unPlot : plotsAcces.getPlotsParNumStation(selected.getNumS()))
                        if(unPlot.getNumP()==0) {
                            nextNumP = 1;
                        }
                else {
                            nextNumP =lastNumP +1;
                        }
                        boolean isInserted = plotsAcces.addPlot(nextNumP, selected.getNumS(), radioChoiceButton.getText().toString());
ce qui se passe, l'enregistrement n'est fait qu'une fois, le NUMP ne peut pas passer à 2,3,4 par ex.
si le NUMP =0, il passe à 1 c'est tout , pas de nouvel enregistrement qui peut se faire.

je ne comprend pas pourquoi. Help s'il vous plait