Aller au contenu | Aller au menu | Aller à la recherche


Android SQlite affectedRows

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.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet