iOS SQLite FMDB Transactions. utilisation Correcte?
Je vais juste essayer de l'utilisation des transactions avec les FMDB SQLite iOS wrapper.
La documentation est un peu vague sur les transactions, mais d'avoir un coup d'oeil rapide à certaines fonctions, je suis venu avec la logique suivante:
[fmdb beginTransaction];
//Run the following query
BOOL res1 = [fmdb executeUpdate:@"query1"];
BOOL res2 = [fmdb executeUpdate:@"query2"];
if(!res1 || !res2) [fmdb rollback];
else [fmdb commit];
OriginalL'auteur jim | 2011-07-05
Vous devez vous connecter pour publier un commentaire.
Je ne voudrais pas essayer de faire la deuxième mise à jour si la première a échoué.
Pour paranoid robustesse, vous devriez avoir un bloc try ... catch dans le cas où quelque chose déclenche une exception. Si vous le faites, vous pouvez l'utiliser à votre avantage.
OriginalL'auteur JeremyP
Vous pouvez également utiliser FMDatabaseQueue pour gérer vos transactions, qui fait partie de fmdb:
La Documentation
inTransaction a beaucoup aidé. Merci s'accoupler.
Personne n'a jamais mentionne où
whoopsSomethingWrongHappened
vient de...cela a un inconvénient. Vous n'avez aucun contrôle sur beginTransaction et de commettre des méthodes. Leurs valeurs de retour. Que faire si beginTransacion (qui est utilisé à l'intérieur de inTransaction) renvoie la valeur faux? Vous n'avez pas le contrôle
OriginalL'auteur ccgus
Moyen rapide:
OriginalL'auteur SoftDesigner
Il semble comme un valide scénario d'utilisation, à qui pourrais-je ajouter de la sortie des valeurs de
-lastErrorMessage
et-lastErrorCode
avant d'effectuer un retour en arrière, de sorte que vous obtenez une idée de ce que s'est-il passé.Mieux encore, ces appels après chaque
-executeUpdate
, de sorte que vous saurez si une erreur s'est produite après chaque instruction:OriginalL'auteur luvieere