Comment puis-je utiliser sqlite3 PRAGMA user_version en Objective-c?
Je suis en train de vérifier le user_version de la DB sqlite. J'ai un outil d'administration pour augmenter le version, mais je ne comprends pas la syntaxe de la pragma déclaration. J'attends de tester la valeur dans un if. Quelqu'un peut-il fournir un exemple de code? Quand je incorporer le pragma relevé dans mon code objective-c, le compilateur génère une erreur.
J'ai mis à jour ma réponse avec des exemples.
OriginalL'auteur mobibob | 2010-04-17
Vous devez vous connecter pour publier un commentaire.
Je me suis dit elle avec l'inspiration de newtover, de creuser dans FMDB et re-lecture de la sqlite3 de la documentation (c'est encore très vague à mon avis). Ce code renvoie la valeur que je l'ai croisé dans l'outil d'admin quand je fais des changements notables dans le schéma qui nécessitent de la migration.
J'ai une méthode similaire pour la version de schéma où l'instruction sql est changé à
"PRAGMA schema_version;"
par le toucher, voulez-vous dire par "lecture seule"? Je pensais que le but d'avoir une version à lire et à tester la valeur. Je n'ai pas l'intention de le modifier. Acheter pourquoi ne devrais-je pas y toucher.
L'sqlite site web de Anton lié a la réponse à votre question, consultez le schema_version section, deuxième paragraphe: sqlite.org/pragma.html#pragma_schema_version
comme je le pensais (j'ai lu ce retour en 2010), l'avertissement est contre la modification. Il n'y a aucun problème avec la lecture seule, "...à l'aide de "PRAGMA schema_version" pour modifier le schéma de la version..."
Comment puis-je mettre à jour user_version de sqlite par programmation ?
OriginalL'auteur mobibob
Pragma états ne peut pas être utilisé dans d'autres états (il n'y a pas de références à pragma-stmt à partir d'autres états).
Mais vous pouvez utiliser le user_version valeur en faisant deux demandes: l'interrogation pragma et en utilisant la valeur sélectionnée comme littéral dans la prochaine requête.
UPD: si vous êtes intéressé par PRAGMA syntaxe, c'est plutôt simple:
Qui est le résultat viendra comme une ligne avec une valeur unique.
Si vous êtes intéressé par un de façon à émettre des déclarations de SQLite en objective-c, essayez de regarder les voisin questions: exemple. Malheureusement, je n'ai jamais codé en objective-c.
OriginalL'auteur newtover
Si vous utilisez FMDB wrapper (ce qui est recommandé si vous ne voulez pas avoir affaire avec C gestionnaire d'interface de sqlite)
Utilisation
Lire les user_version utilisateur
Documentation:
http://ccgus.github.io/fmdb/html/Categories/FMDatabase+FMDatabaseAdditions.html
Cette réponse est fondamentalement copie de cette réponse: https://stackoverflow.com/a/27807125/1364174
OriginalL'auteur Paul Brewczynski