Bonjour,

J'ai un souci avec la base de données interne SQLite, jusque là, mon application exécutait bien la mise à jour de la base (onUpgrade) quand j'ajoutai 1 à la version de la base. Mais après avoir modifié le programme, plus rien ne s'exécute à ce niveau.

Voici un extrait de mon activity :

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
 
 
    private DataBaseRequest db;
    ProgressBar bar;
    TextView txtLoading;
    Data d = new Data();
 
    public void onCreate(Bundle savedInstanceState) {
 
    	super.onCreate(savedInstanceState);
    	requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.page_loading);
        bar = (ProgressBar) findViewById(R.id.ProgressBarLoad);
        txtLoading = (TextView) findViewById(R.id.txtLoading);
        new Thread(myThread).start();
        bar.setProgress(0);
 
        //Initialisation de la Base
        db = new DataBaseRequest(this);
 
[...]
le DataBaseRequest :

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
private SQLiteDatabase bdd;
	private DataBaseHelper baseIrdes;
	private Data d = new Data();
 
	public DataBaseRequest(Context context) {
		super();
		System.out.println("Initialisation");
		baseIrdes = new DataBaseHelper(context, d.dbName, null, d.dbVersion);
	}
 
	private void open(){
		//on ouvre la BDD en écriture
		bdd = baseIrdes.getWritableDatabase();
	}
 
	private void close(){
		//on ferme l'accès à la BDD
		bdd.close();
	}
[...]
Data regroupe des données statiques, comme le nom des tables colonnes et version par exemple. En testant avec des out.print, je remarque que le message "initialisation" s'affiche dans logCat, mais rien d'autre après.

Voici mon DataBaseHelper :

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
 
 
public class DataBaseHelper extends SQLiteOpenHelper {
 
	private Data d = new Data();
 
	public DataBaseHelper(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, version);
		System.out.println("Test");
		// TODO Auto-generated constructor stub
	}
 
	@Override
	public void onCreate(SQLiteDatabase db) {
 
		d.updateDataBase = true;
		//Activation prise en charge Foreign Keys
		db.execSQL("PRAGMA foreign_keys = ON;");
 
		[...]
		db.execSQL("CREATE TABLE "+d.actualiteTable+" ("+d.colActualiteNum+ " INTEGER PRIMARY KEY , "+
			    d.colActualiteTitre+ " TEXT, "+d.colActualiteDate+" TEXT, "+d.colActualiteLien+" TEXT, "+d.colActualiteTypeActu+" INTEGER, " +
			    		"FOREIGN KEY ("+d.colActualiteTypeActu+") REFERENCES "+d.typeActuTable+" ("+d.colTypeActuNum+"))");
		[...]
		  System.out.println("Create table Complete");
		  InsertRows(db);
	}
 
 
 
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		[...]
		db.execSQL("DROP TABLE IF EXISTS "+d.actualiteTable);
		[...]
 
		onCreate(db);
 
	}
 
	public void InsertRows (SQLiteDatabase bdd){
 
		System.out.println("Chargement des données");
 
		bdd = this.getWritableDatabase();
		ContentValues cv=new ContentValues();
 
		// --------- TypeActu -------- //
 
		cv.put(d.colTypeActuNum, 1);
		cv.put(d.coltypeActuLibelle, "Gen");
		bdd.insert(d.typeActuTable, d.colTypeActuNum, cv);
		[...]
		bdd.close();
		System.out.println("Données inserées");
}
Les autres messages n'apparaissent plus dans logCat, ce qui laisse penser que l'upgrade ne se fait pas du tout... Seul le message "Test" apparaît. D'où pourrait venir le problème ?