Bonjour ,
je cherche à stocker des données dans une base SQLite , n'ayant jamais fait cette pratique , je me tourne vers vous pour vous demandez des conseils.
dans mon activité principale j'ai mit :
Ensuite j'ai créé une classe MaBaseDeDonnée
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 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_exercice); // gestion base de donnee //Création d'une instance de ma classe JeuBdd JeuBdd exerciceBdd = new JeuBdd(this); //Création d'un exercice ExerciceActivity exercice = new ExerciceActivity(id, nom_exercice); //On ouvre la base de données pour écrire dedans exerciceBdd.open(); //On insère le exercice que l'on vient de créer exerciceBdd.insertExercice(exercice); //Pour vérifier que l'on a bien créé notre exercice dans la BDD //on extrait l exercice de de la BDD grâce a l ID de l exercice que l'on a créé précédemment ExerciceActivity exerciceFromBdd = exerciceBdd.getExerciceWithId(exercice.getId()); //Si un livre est retourné (donc si le livre à bien été ajouté à la BDD) if(exerciceFromBdd != null){ //On affiche les infos du livre dans un Toast Toast.makeText(this, exerciceFromBdd.toString(), Toast.LENGTH_LONG).show(); //On modifie le ID de l'exercice exerciceFromBdd.setId(0); //Puis on met à jour la BDD exerciceBdd.updateLivre(exerciceFromBdd.getId(), exerciceFromBdd); } //On extrait l exercice de la BDD grâce au ID //S'il existe un exercice possédant cet ID dans la BDD if(exerciceFromBdd != null){ //On affiche les nouvelle info de exercice pour vérifié que l exercice a bien été mis à jour Toast.makeText(this, exerciceFromBdd.toString(), Toast.LENGTH_LONG).show(); //on supprime l exercice de la BDD grâce à son ID exerciceBdd.removeExerciceWithID(exerciceFromBdd.getId()); } //On essait d'extraire de nouveau l exercice de la BDD toujours grâce à son ID exerciceFromBdd = exerciceBdd.getExerciceWithId(exerciceFromBdd.getId()); //Si aucun livre n'est retourné if(exerciceFromBdd == null){ //On affiche un message indiquant que l exercice n'existe pas dans la BDD Toast.makeText(this, "Cette exercice n'existe pas dans la BDD", Toast.LENGTH_LONG).show(); } //Si l exercice existe (mais normalement il ne devrait pas) else{ //on affiche un message indiquant que l exercice existe dans la BDD Toast.makeText(this, "Cet exercice existe dans la BDD", Toast.LENGTH_LONG).show(); } exerciceBdd.close(); //fin gestion base de donnee
contenant ceci :
Et une derniere class JeuBdd
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 package org.pepimobil; import java.text.SimpleDateFormat; import java.util.Date; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class MaBaseDeDonnee extends SQLiteOpenHelper { private static final String TABLE_EXERCICE = "table_exercice"; private static final String TABLE_SCORE = "table_score"; private static final String COL_ID = "ID"; private static final String COL_NOM_EXERCICE = "NomExercice"; private static final String COL_ID_EXERCICE = "id_exercice"; private static final String SCORE = "value"; private static final String DATE = "date"; private static final String CREATE_BDD = "CREATE TABLE " + TABLE_EXERCICE + " ("+ COL_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, "+ COL_NOM_EXERCICE + " TEXT NOT NULL;)"; //private static final String CREATE_BDD2 = "CREATE TABLE " + TABLE_SCORE + " ("+ COL_ID_EXERCICE +"INTEGER DEPEND TABLE_EXERCICE, "+ SCORE +"INTEGER NOT NULL;)"; public MaBaseDeDonnee(Context context, String name, CursorFactory factory, int version) { super(context, name, null, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(CREATE_BDD); //db.execSQL(CREATE_BDD2); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
Contenant ceci :
Hors ça ne fonctionne pas , aurais-je passé à coté de quelquechose ?
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 package org.pepimobil; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class JeuBdd { private static final int VERSION_BDD = 1; private static final String NOM_BDD = "score_jeu.db"; private static final String TABLE_EXERCICE = "table_exercice"; private static final String COL_ID = "ID"; private static final int NUM_COL_ID = 0; private static final String COL_NOM_EXERCICE = "EXERCICE 1"; private static final int NUM_COL_NOM_EXERCICE = 1; private SQLiteDatabase bdd; private MaBaseDeDonnee maBaseSQLite; public JeuBdd(Context context){ //On créer la BDD et sa table maBaseSQLite = new MaBaseDeDonnee(context, NOM_BDD, null, VERSION_BDD); } public void open(){ //on ouvre la BDD en écriture bdd = maBaseSQLite.getWritableDatabase(); } public void close(){ //on ferme l'accès à la BDD bdd.close(); } public SQLiteDatabase getBDD(){ return bdd; } public long insertExercice(ExerciceActivity exercice){ //Création d'un ContentValues (fonctionne comme une HashMap) ContentValues values = new ContentValues(); //on lui ajoute une valeur associé à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur) values.put(COL_ID, exercice.getId()); values.put(COL_NOM_EXERCICE, exercice.getNom_exercice()); //on insère l'objet dans la BDD via le ContentValues return bdd.insert(TABLE_EXERCICE, null, values); } public int updateLivre(int id, ExerciceActivity exercice){ //La mise à jour de l exercice dans la BDD fonctionne plus ou moins comme une insertion //il faut simple préciser quelle exercice on doit mettre à jour grâce à l'ID ContentValues values = new ContentValues(); values.put(COL_ID, exercice.getId()); values.put(COL_NOM_EXERCICE, exercice.getNom_exercice()); return bdd.update(TABLE_EXERCICE, values, COL_ID + " = " +id, null); } public int removeExerciceWithID(int id){ //Suppression d'un exercice de la BDD grâce à l'ID return bdd.delete(TABLE_EXERCICE, COL_ID + " = " +id, null); } public ExerciceActivity getExerciceWithId(int id){ //Récupère dans un Cursor les valeur correspondant à un exercice contenu dans la BDD (ici on sélectionne le exercice grâce à son id) Cursor c = bdd.query(TABLE_EXERCICE, new String[] {COL_ID, COL_NOM_EXERCICE}, COL_ID + " LIKE \"" + id +"\"", null, null, null, null); return cursorToExercice(c); } //Cette méthode permet de convertir un cursor en un exercice private ExerciceActivity cursorToExercice(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 exercice ExerciceActivity exercice = new ExerciceActivity(0, null); //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor exercice.setId(c.getInt(NUM_COL_ID)); exercice.setNom_exercice(c.getString(NUM_COL_NOM_EXERCICE)); //On ferme le cursor c.close(); //On retourne le exercice return exercice; } }
Partager