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 :
Dans la partie lectureEtatUtilisateur je contrôle si etat a bien changé sa valeur. Jusqu'ici tout va bien ça marche.
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"))); }
Maintenant je veux faire l'inverse, extraire l'id de l'utilisateur ou etat = 1,
et j'utilise cette méthode :
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.
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; }
voici le LogCat
Merci pour votre aide !
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
Partager