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 :

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
Ensuite j'ai créé une classe MaBaseDeDonnée

contenant ceci :

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
 
	}
 
}
Et une derniere class JeuBdd

Contenant ceci :

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;
	}
}
Hors ça ne fonctionne pas , aurais-je passé à coté de quelquechose ?