Bonjour,

Mon application lance une base de donnée qui a pour fonctionnement un qcm.

J'ai récupérer le fonctionnement sur un tuto et il fonctionnait bien, mais depuis quelques jours, j'ai ces erreurs dans les logs et je comprends pas la raison. Pouvez-vous m'aider ?

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
01-13 22:10:16.686: E/Database(11807): Leak found
01-13 22:10:16.686: E/Database(11807): java.lang.IllegalStateException: mPrograms size 1
01-13 22:10:16.686: E/Database(11807): 	at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1695)
01-13 22:10:16.686: E/Database(11807): 	at dalvik.system.NativeStart.run(Native Method)
01-13 22:10:16.686: E/Database(11807): Caused by: java.lang.IllegalStateException: /data/data/com.tmm.android.nomdemonapplication/databases/questionsDb SQLiteDatabase created and never closed
01-13 22:10:16.686: E/Database(11807): 	at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1721)
01-13 22:10:16.686: E/Database(11807): 	at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:763)
01-13 22:10:16.686: E/Database(11807): 	at com.tmm.android.candide.db.DBHelper.openDataBase(DBHelper.java:114)
01-13 22:10:16.686: E/Database(11807): 	at com.tmm.android.candide.SplashActivity.getQuestionSetFromDb(SplashActivity.java:119)
01-13 22:10:16.686: E/Database(11807): 	at com.tmm.android.candide.SplashActivity.onClick(SplashActivity.java:70)
01-13 22:10:16.686: E/Database(11807): 	at android.view.View.performClick(View.java:2405)
01-13 22:10:16.686: E/Database(11807): 	at android.view.View.onTouchEvent(View.java:4270)
01-13 22:10:16.686: E/Database(11807): 	at android.widget.TextView.onTouchEvent(TextView.java:6784)
01-13 22:10:16.686: E/Database(11807): 	at android.view.View.dispatchTouchEvent(View.java:3796)
01-13 22:10:16.686: E/Database(11807): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:888)
01-13 22:10:16.686: E/Database(11807): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:888)
01-13 22:10:16.686: E/Database(11807): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:888)
01-13 22:10:16.686: E/Database(11807): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:888)
01-13 22:10:16.686: E/Database(11807): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:888)
01-13 22:10:16.686: E/Database(11807): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1673)
01-13 22:10:16.686: E/Database(11807): 	at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1114)
01-13 22:10:16.686: E/Database(11807): 	at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
01-13 22:10:16.686: E/Database(11807): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1657)
01-13 22:10:16.686: E/Database(11807): 	at android.view.ViewRoot.handleMessage(ViewRoot.java:1758)
01-13 22:10:16.686: E/Database(11807): 	at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 22:10:16.686: E/Database(11807): 	at android.os.Looper.loop(Looper.java:136)
01-13 22:10:16.686: E/Database(11807): 	at android.app.ActivityThread.main(ActivityThread.java:4425)
01-13 22:10:16.686: E/Database(11807): 	at java.lang.reflect.Method.invokeNative(Native Method)
01-13 22:10:16.686: E/Database(11807): 	at java.lang.reflect.Method.invoke(Method.java:521)
01-13 22:10:16.686: E/Database(11807): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:850)
01-13 22:10:16.686: E/Database(11807): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
01-13 22:10:16.686: E/Database(11807): 	at dalvik.system.NativeStart.main(Native Method)
Et le java de ma base de donné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
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
public class DBHelper extends SQLiteOpenHelper{
 
	private static String DB_PATH = "/data/data/com.tmm.android.(nomdemonapplication)/databases/";
	private static String DB_NAME = "questionsDb";
	private SQLiteDatabase myDataBase; 
	private final Context myContext;
 
 
	public DBHelper(Context context) {
		super(context, DB_NAME, null, 1);
		this.myContext = context;
	}	
 
	public void createDataBase() throws IOException{
 
		boolean dbExist = checkDataBase();
		if(!dbExist)
		{
			this.getReadableDatabase();
 
			try {
				copyDataBase(); 
			} catch (IOException e) {
				throw new Error("Error copying database");
			}
		}
	}
 
	private boolean checkDataBase(){
		SQLiteDatabase checkDB = null;
		try{
			String myPath = DB_PATH + DB_NAME;
			checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
		}catch(SQLiteException e){
			//database does't exist yet.
		}
		if(checkDB != null){
			checkDB.close();
		}
 
		return checkDB != null ? true : false;
	}
 
	private void copyDataBase() throws IOException{
 
		InputStream myInput = myContext.getAssets().open(DB_NAME);
 
		String outFileName = DB_PATH + DB_NAME;
 
		OutputStream myOutput = new FileOutputStream(outFileName);
 
		//transfer bytes from the inputfile to the outputfile
		byte[] buffer = new byte[1024];
		int length;
		while ((length = myInput.read(buffer))>0){
			myOutput.write(buffer, 0, length);
		}
 
		myOutput.flush();
		myOutput.close();
		myInput.close();
 
	}
 
 
	public void openDataBase() throws SQLException{
		//Open the database
		String myPath = DB_PATH + DB_NAME;
		myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
	}
 
	@Override
	public synchronized void close() {
		if(myDataBase != null)
			myDataBase.close();
		super.close();
	}
 
	@Override
	public void onCreate(SQLiteDatabase db) {
	}
 
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	}
Merci