2014-06-30 5 views
0

Comment mettre à jour une table en utilisant une clé (pas une clé d'identification primaire)?Mise à jour par clé dans greendao

J'ai une table de client et j'obtiens des données de client qui sont mises à jour ou créées. Donc, pour les données nouvellement créées, j'utilise la méthode insertOrReplace qui insère les données en utilisant l'objet.

Mais pour mettre à jour une ligne, selon mes connaissances, je dois obtenir la ligne en utilisant la clé que j'ai, puis mettre à jour la ligne. Est-il impossible de le faire sans obtenir la ligne car cela nécessitera deux opérations pour chaque ligne.

Répondre

1

Comme vous pouvez toujours écrire vos propres instructions sql et les exécuter via DaoSesseion.getDatabase(), il est possible de mettre à jour votre entrée sans la récupérer d'abord. Puisque greendao utilise un cache, je déconseillerais fortement de le mettre à jour manuellement, car votre cache ne sera pas mis à jour, ce qui peut entraîner un comportement très étrange de votre application.

En plus de cela, la pénalité de performance pour aller chercher votre entrée ne sera pas perceptible.

succincts:

Mise à jour de fournir manuellement rend plus complexe votre code, peut introduire une incohérence de cache et ne fait que un coup de pouce très faible performance (si elle augmente les performances du tout). Donc à mon humble avis ne pas mettre à jour les entrées manuellement!

+0

La raison pour laquelle je pose cette question est parce que je reçois plusieurs entrées et que j'ai besoin de mettre à jour quelques unes d'entre elles. Je voulais utiliser quelque chose de similaire à updateInTx pour cela. Quoi qu'il en soit, merci pour les explications sur le cache greendao. – Anuj

+1

@Anuj Si vous voulez que toutes vos mises à jour se produisent dans une transaction, il vous suffit de démarrer une transaction avant votre première mise à jour et de la valider ou de la restaurer après votre dernière mise à jour/erreur. Greendao reconnaîtra votre transaction et l'utilisera. Voir ma réponse [ici] (http://stackoverflow.com/questions/23567985/android-java-outofmemory-while-inserting-a-huge-list-into-the-database-sql/23604766#23604766). – AlexS

+0

Je ne le savais pas. C'était ce que je cherchais. Merci. – Anuj

Questions connexes