Android SQlite affectedRows
Par PlaceOweb le dimanche, mai 1 2016, 10:52 - SQL - Lien permanent
Les INSERT/DELETE/UPDATE retourne the number of rows affected, mais pas les bons ! Pour résumer il retourne le nombre de row matching au critère WHERE.
ContentValues values = new ContentValues(); values.put("changed", changed ? "1" : "0"); long affectedRows = database.update("my_table", values, "id = ?", new String[]{Integer.toString(id)});
Sur une clé primaire avec un seul row attendu et existant, cette méthode, retourne toujours 1,
- que la valeur d’origine soit différente
- que la valeur d’origine soit identique !
Il en est de même pour la méthode SQL changes(), elle retourne le nombre de lignes possibles à modifiées, et non pas le nombre de ligne réellement modifiées.
Ce comportement, est identique à JDBC. Alors que PHP via PDO par exemple retourne le nombre réel de row modifiés.