Cursor index outOfBoundexception
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:
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:
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:
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 !