Salut les informaticiens, je veux insérer une colonne dans ma base SQLite, sachant que j'ais deux table ( TABLE_PROJET) composite d'un autre table ( TABLE_NOTE):

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
 
 
    private static final String TABLE_PROJET = "table_projet";
    private static final String COL_IDPROJET = "IDP";
    private static final String COL_NOM_PROJET = "nom_projet";
    private static final String COL_DATED_PROJET = "dated";
    private static final String COL_DATEF_PROJET = "datef";
 
 
 
 
    private static final String CREATE_PROJET = "CREATE TABLE " + TABLE_PROJET + "("
            + COL_IDPROJET + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_NOM_PROJET + " TEXT NOT NULL, "
            + COL_DATED_PROJET + " INTEGER NOT NULL, " + COL_DATEF_PROJET + " INTEGER NOT NULL );";
 
                          **********************NOTE********************
 
    private static final String TABLE_NOTE = "table_note";
    private static final String COL_ID = "IDN";
    private static final String COL_TITRE_NOTE = "titre_note";
    private static final String COL_DATE_NOTE ="date";
    private static final String COL_VERSION_NOTE = "version_n";
    private static final String COL_TEXT = "text_note";
    private static final String COL_IDPROJET_NOTE = "idp_note";
 
 
 
 
    private static final String CREATE_NOTE = "CREATE TABLE " + TABLE_NOTE + " ("
            + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TITRE_NOTE + " TEXT NOT NULL, "
            + COL_DATE_NOTE + " INTEGER NOT NULL, " + COL_TEXT + " TEXT NOT NULL, "
            +  COL_VERSION_NOTE + " INTEGER NOT NULL, " +  COL_IDPROJET_NOTE + " INTEGER NOT NULL, FOREIGN KEY(" + COL_IDPROJET_NOTE +
              ") REFERENCES "  + TABLE_PROJET + "(" + COL_IDPROJET + "))";
Ma classe qui gère la base:

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
public class NoteDB {
 
    private static final int VERSION_BDD = 3;
    private static final String NOM_BDD = "notes.db";
 
    private static final String TABLE_NOTE = "table_note";
    private static final String COL_ID = "IDN";
    private static final int NUM_COL_ID =0;
    private static final String COL_DATE_NOTE = "date";
    private static final int NUM_COL_DATE =1;
    private static final String COL_TITRE_NOTE = "titre_note";
    private static final int NUM_COL_TITRE =2;
    private static final String COL_TEXT = "text_note";
    private static final int NUM_COL_TEXT =3;
    private static final String COL_VERSION_NOTE= "version_n";
    private static final int NUM_COL_VERSION =4;
 
    private SQLiteDatabase bdd;
 
    private DataBaseClasse maBaseNote;
 
    public NoteDB(Context context){
        //On crée la BDD et sa table
        maBaseNote = new DataBaseClasse(context, NOM_BDD, null, VERSION_BDD);
    }
 
    public void open(){
        //on ouvre la BDD en écriture
        bdd = maBaseNote.getWritableDatabase();
    }
 
    public void close(){
        //on ferme l'accès à la BDD
        bdd.close();
    }
 
    public SQLiteDatabase getBDD(){
        return bdd;
    }
 
    public long insertnote( Note note){
        //Création d'un ContentValues (fonctionne comme une HashMap)
        ContentValues values = new ContentValues();
        //on lui ajoute une valeur associée à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
 
        values.put(COL_TITRE_NOTE, Note.getTitre());
        values.put(COL_DATE_NOTE,Note.getDateC());
        values.put(COL_VERSION_NOTE, Note.getVersionN());
        values.put(COL_TEXT, Note.getText());
 
        //on insère l'objet dans la BDD via le ContentValues
        return bdd.insert(TABLE_NOTE, null, values);
    }
 
    public int updatenote(String titre, Note note){
        //La mise à jour d'une note dans la BDD fonctionne plus ou moins comme une insertion
        //il faut simplement préciser quel note on doit mettre à jour grâce à l'ID
        ContentValues values = new ContentValues();
        values.put(COL_TITRE_NOTE, Note.getTitre());
        values.put(COL_DATE_NOTE,Note.getDateC());
        values.put(COL_VERSION_NOTE, Note.getVersionN());
        values.put(COL_TEXT, Note.getText());
        return bdd.update(TABLE_NOTE, values, COL_TITRE_NOTE + " = " +titre, null);
    }
 
    public int removeNoteWithName(String titre){
        //Suppression d'un livre de la BDD grâce à l'ID
        return bdd.delete(TABLE_NOTE, COL_TITRE_NOTE + " = " +titre, null);
    }
 
    public Note getNoteWithVersion(String version){
        //Récupère dans un Cursor les valeurs correspondant à une note contenu dans la BDD (ici on sélectionne la note grâce à son titre)
        Cursor c = bdd.query(TABLE_NOTE, new String[] {COL_ID, COL_DATE_NOTE, COL_TITRE_NOTE, COL_TEXT, COL_VERSION_NOTE}, COL_VERSION_NOTE + " LIKE \"" + version +"\"", null, null, null, null,null);
        return cursorToLivre(c);
    }
    public Note getNoteWithTitre(String titre){
        //Récupère dans un Cursor les valeurs correspondant à une note contenu dans la BDD (ici on sélectionne la note grâce à son titre)
        Cursor c = bdd.query(TABLE_NOTE, new String[] {COL_ID, COL_DATE_NOTE, COL_TITRE_NOTE, COL_TEXT, COL_VERSION_NOTE}, COL_TITRE_NOTE + " LIKE \"" + titre +"\"", null, null, null, null,null);
        return cursorToLivre(c);
    }
    public Note getNoteWithDate(int date){
        //Récupère dans un Cursor les valeurs correspondant à une note contenu dans la BDD (ici on sélectionne la note grâce à son titre)
        Cursor c = bdd.query(TABLE_NOTE, new String[] {COL_ID, COL_DATE_NOTE, COL_TITRE_NOTE, COL_TEXT, COL_VERSION_NOTE}, COL_DATE_NOTE + " LIKE \"" + date +"\"", null, null, null, null,null);
        return cursorToLivre(c);
    }
 
    //Cette méthode permet de convertir un cursor en un livre
    private Note cursorToLivre(Cursor c){
        //si aucun élément n'a été retourné dans la requête, on renvoie null
        if (c.getCount() == 0)
            return null;
 
        //Sinon on se place sur le premier élément
        c.moveToFirst();
        //On créé un livre
        Note note = new Note();
        //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
 
        Note.setTitre(c.getString(NUM_COL_TITRE));
        Note.setDateC(c.getInt(NUM_COL_DATE));
        Note.setText(c.getString(NUM_COL_TEXT));
        Note.setVersionN(c.getInt(NUM_COL_VERSION));
        //On ferme le cursor
        c.close();
 
        //On retourne le livre
        return note;
    }
}
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
public class MainActivity extends Activity {
    private static final String LOG_TAG = "success";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Création d'une instance de ma classe NoteDB
        NoteDB maNoteDB = new NoteDB(this);
 
 
        //Création d'une note
 
        Note note = new Note("titre", 2015 ,2, "Programmez pour Android");
 
        //On ouvre la base de données pour écrire dedans
 
        maNoteDB.open();
        //On insère la note que l'on vient de créer
 
        maNoteDB.insertnote(note);
        String log= "success";
        Log.d(LOG_TAG,log);
 
        //Pour vérifier que l'on a bien créé notre note dans la BDD
        //on extrait la note  de la BDD grâce au titre du livre que l'on a créé précédemment
        Note NoteFromBdd =  maNoteDB.getNoteWithTitre(note.getTitre());
        //Si une note est retourné (donc si la note  à bien été ajouté à la BDD)
        if(NoteFromBdd != null){
            //On affiche les infos du note dans un Toast
            Toast.makeText(this, NoteFromBdd.toString(), Toast.LENGTH_LONG).show();
            //On modifie le titre du note
            NoteFromBdd.setTitre("J'ai modifié le titre du livre");
            //Puis on met à jour la BDD
            maNoteDB.updatenote(NoteFromBdd.getTitre(), NoteFromBdd);
        }
 
        //On extrait la note de la BDD grâce au nouveau titre
        NoteFromBdd = maNoteDB.getNoteWithTitre("J'ai modifié le titre du livre");
        //S'il existe une note possédant ce titre dans la BDD
        if(NoteFromBdd != null){
            //On affiche les nouvelles informations du note  pour vérifier que le titre du livre a bien été mis à jour
            Toast.makeText(this, NoteFromBdd.toString(), Toast.LENGTH_LONG).show();
            //on supprime la note de la BDD grâce à son ID
            maNoteDB.removeNoteWithName(NoteFromBdd.getTitre());
        }
 
        //On essaye d'extraire de nouveau la note de la BDD toujours grâce à son nouveau titre
        NoteFromBdd = maNoteDB.getNoteWithTitre("J'ai modifié le titre du livre");
        //Si aucun livre n'est retourné
        if(NoteFromBdd == null){
            //On affiche un message indiquant que la note n'existe pas dans la BDD
            Toast.makeText(this, "Ce livre n'existe pas dans la BDD", Toast.LENGTH_LONG).show();
        }
        //Si la note  existe (mais normalement il ne devrait pas)
        else{
            //on affiche un message indiquant que la note existe dans la BDD
            Toast.makeText(this, "Ce livre existe dans la BDD", Toast.LENGTH_LONG).show();
        }
 
        maNoteDB.close();
 
    }
    }
quand j’exécute le programme l'insertion ne se faisait pas et l’émulateur m'affichait : Ce livre n'existe pas dans la BDD, avec un message d'erreur dans le logcat:

Error inserting text_note=Programmez pour Android date=2015 version_n=2 titre_note=titre
android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed

Merci de m'indiquer ou j'ai l'erreur SVP