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.