3 votes

Mise à jour de l'objet entier avec DBFlow

J'utilise DBFlow dans mon projet Android et j'aimerais savoir s'il existe un moyen de mettre à jour l'objet entier au lieu de spécifier chaque colonne comme indiqué ci-dessous.

// Native SQL wrapper
SQLite.update(Ant.class)
  .set(Ant_Table.type.eq("other"))
  .where(Ant_Table.type.is("worker"))
  .and(Ant_Table.isMale.is(true))
  .async()
  .execute(); // non-UI blocking

Extrait du guide https://agrosner.gitbooks.io/dbflow/content/SQLiteWrapperLanguage.html

La partie "Set" de la mise à jour prend en charge différents types de valeurs :

  1. ContentValues -> convertit en clé/valeur comme un SQLOperator de is()/eq()
  2. SQLOperator, qui sont regroupés dans le cadre de l'instruction SET.

A partir de là, j'ai essayé de passer une ContentValues dans la méthode set.

// Native SQL wrapper
SQLite.update(Ant.class)
  .set(contentValues)
  .where(Ant_Table.type.is("worker"))
  .and(Ant_Table.isMale.is(true))
  .async()
  .execute(); // non-UI blocking

et j'obtiens une erreur de compilation

set (com.raizlabs....SQLOperator...) in Update cannot be applied 
to (android.content.ContentValues)

0voto

pepiino Points 141

Tu dois l'appeler comme ça :

SQLite.update(Ant.class)
  .set().conditionValues(contentValues)
  .where(Ant_Table.type.is("worker"))
  .and(Ant_Table.isMale.is(true))
  .async()
  .execute(); 

Ce n'est pas clair dans la documentation ni dans le code source mais cela devrait fonctionner de cette façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X