Bonjour,
Je dois gérer des Scores pour un jeu développé sur Android pour un projet.

J'ai suivi quelques tutos concernant SQLite, mais j'ai un soucis, l'id de mon score est toujours le même, pourtant j'ai bien un autoincrement dans la requete.
Et lorsque je regarde ma base, j'ai toujours une base vide. Enfin j'en ais l'impression.

Je souhaiterais que les scores soient conservés a chaque lancement de l'application.

Voici mes classes :


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
package com.formation.MenuJeu;
 
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
 
public class MaBaseSQLite extends SQLiteOpenHelper {
 
	private static final String TABLE_SCORES = "table_scores";
	private static final String COL_ID = "ID";
	private static final String COL_TEMPS = "TEMPS";
 
	private static final String CREATE_BDD = "CREATE TABLE " + TABLE_SCORES + " ("
	+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TEMPS + " LONG NOT NULL );";
 
	public MaBaseSQLite(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, version);
	}
 
	@Override
	public void onCreate(SQLiteDatabase db) {
		//on créé la table à partir de la requête écrite dans la variable CREATE_BDD
		db.execSQL(CREATE_BDD);
	}
 
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		//On peut fait ce qu'on veut ici moi j'ai décidé de supprimer la table et de la recréer
		//comme ça lorsque je change la version les id repartent de 0
		db.execSQL("DROP TABLE " + TABLE_SCORES + ";");
		onCreate(db);
	}
 
}

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
package com.formation.MenuJeu;
 
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
 
public class ScoresBDD {
 
	private static final int VERSION_BDD = 1;
	private static final String NOM_BDD = "eleves.db";
 
	private static final String TABLE_SCORES = "table_scores";
	private static final String COL_ID = "ID";
	private static final int NUM_COL_ID = 0;
	private static final String COL_TEMPS = "TEMPS";
	private static final int NUM_COL_TEMPS = 1;
 
 
	private SQLiteDatabase bdd;
 
	private MaBaseSQLite maBaseSQLite;
 
	public ScoresBDD(Context context){
		//On créer la BDD et sa table
		maBaseSQLite = new MaBaseSQLite(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 insertScore(Scores score){
		//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_TEMPS, score.getTemps());
		//on insère l'objet dans la BDD via le ContentValues
		return bdd.insert(TABLE_SCORES, null, values);
	}
 
	public int updateScore(int id, Scores score){
		//La mise à jour d'un score dans la BDD fonctionne plus ou moins comme une insertion
		//il faut simple préciser quelle score on doit mettre à jour grâce à l'ID
		ContentValues values = new ContentValues();
		values.put(COL_TEMPS, score.getTemps());
		return bdd.update(TABLE_SCORES, values, COL_ID + " = " +id, null);
	}
 
	public int removeScoreWithID(int id){
		//Suppression d'un score de la BDD grâce à l'ID
		return bdd.delete(TABLE_SCORES, COL_ID + " = " +id, null);
	}
 
	public Scores getScoreWithTemps(Long temps){
		Cursor c = bdd.query(TABLE_SCORES, new String[] {COL_ID, COL_TEMPS}, COL_TEMPS + " LIKE \"" + temps +"\"", null, null, null, null);
		return cursorToScore(c);
	}
 
	//Cette méthode permet de convertir un cursor en un score
	private Scores cursorToScore(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 score
		Scores score = new Scores((long)150);
		//on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
		score.setId(c.getInt(NUM_COL_ID));
		score.setTemps(c.getLong(NUM_COL_TEMPS));
		//On ferme le cursor
		c.close();
 
		//On retourne le score
		return score;
	}
}

Ma table Score ne comporte rien de particulier

et Enfin je lance ceci dans mon main

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
ScoresBDD scoresBDD = new ScoresBDD(this);
		scoresBDD.open();
 
        Scores score1 = new Scores(200);
        scoresBDD.insertScore(score1);
 
	scoresBDD.close();

Merci d'avance