Bonjour,

Dans ma persistance, j'ai un objet "utilisateur" et dans cette objet j'ai une variable "int etat". Pour changer la valeur de etat dans ma BDD j'utilise
cette méthode avec en parametre idUtilisateur :

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
 
//methode changement etat utilisateur 
    public void InsertEtatUtilisateur(Utilisateur utilisateur){
    	db = database.getWritableDatabase();
    	ContentValues values = new ContentValues();
    	values.put(" COL_ETAT ",1);
        db.update(BDD.TABLE_UTILISATEURS, values, " COL_ID = " + Integer.toString(utilisateur.getIdUtilisateur()) , null);
        lectureEtatUtilisateur(utilisateur);
        db.close();
    }
//control de ma valeur etat
    private void lectureEtatUtilisateur(Utilisateur utilisateur){
    	String query = "SELECT COL_ETAT FROM " + BDD.TABLE_UTILISATEURS + " WHERE COL_ID = " + utilisateur.getIdUtilisateur();
    	Cursor mCursor = ExecuteQuery(query,null);	
    		System.out.println("valeur etat = " + mCursor.getLong(mCursor.getColumnIndex("COL_ETAT")));
    }
Dans la partie lectureEtatUtilisateur je contrôle si etat a bien changé sa valeur. Jusqu'ici tout va bien ça marche.

Maintenant je veux faire l'inverse, extraire l'id de l'utilisateur ou etat = 1,
et j'utilise cette méthode :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 public Cursor SelectUtilisateurEtat(){
   	int etat = 1;
   	String Query = " SELECT COL_ID FROM " + BDD.TABLE_UTILISATEURS + " WHERE COL_ETAT = " + etat;
	Cursor mCursor = ExecuteQuery(Query,null);  
 
  //ici le programme plante
    System.out.println("valeur col_id : "+ mCursor.getLong(mCursor.getColumnIndex(" COL_ID ")));
 
   	return mCursor;
   }
Mais ça plante, le LogCat me dit que mon cursor n'est pas à la bonne position, j'ai utilisé curor.moveToFirst et cela ne fonctionne pas. Et la franchement je ne voie pas mon erreur.

voici le LogCat
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
 
08-14 21:03:22.706: E/AndroidRuntime(968): Uncaught handler: thread main exiting due to uncaught exception
08-14 21:03:22.766: E/AndroidRuntime(968): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.virtualbudget/com.virtualbudget.MainActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.os.Handler.dispatchMessage(Handler.java:99)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.os.Looper.loop(Looper.java:123)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at java.lang.reflect.Method.invoke(Method.java:521)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at dalvik.system.NativeStart.main(Native Method)
08-14 21:03:22.766: E/AndroidRuntime(968): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:99)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at Persistance.DBAdapter.SelectUtilisateurEtat(DBAdapter.java:177)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at com.virtualbudget.MainActivity.ControlEtat(MainActivity.java:267)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at com.virtualbudget.MainActivity.onCreate(MainActivity.java:117)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-14 21:03:22.766: E/AndroidRuntime(968): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
08-14 21:03:22.766: E/AndroidRuntime(968): 	... 11 more
08-14 21:03:22.826: I/dalvikvm(968): threadid=7: reacting to signal 3
08-14 21:03:22.826: I/dalvikvm(968): Wrote stack trace to '/data/anr/traces.txt'
08-14 21:08:22.879: I/Process(968): Sending signal. PID: 968 SIG: 9
Merci pour votre aide !