2010-09-21 5 views
0

J'utilise sqlite3_bind_text pour lier les paramètres de texte à mes requêtes, avec l'indicateur SQLITE_STATIC, puisque je sais que le pointeur de texte reste valide au moins jusqu'à l'exécution de la requête.Gestion des chaînes SQLite en mode transaction

Récemment, j'ai apporté des modifications afin que les requêtes soient exécutées en mode transaction (beaucoup de ces requêtes dans une seule transaction). Le tampon de texte doit-il rester valide jusqu'à la fin de la transaction? Je veux dire, mes tampons de texte sont valides pour la durée d'une seule requête, mais pas la transaction entière. Dois-je spécifier le drapeau SQLITE_TRANSIENT?

Répondre

0

Oui, si vous utilisez SQLITE_STATIC, vous devez laisser le contenu seul jusqu'à la fin de la transaction. Encore plus, vous devriez laisser le contenu seul jusqu'à ce que vous ayez rebondi le paramètre sur autre chose ou jusqu'à ce que vous ayez libéré l'instruction. SQLITE_TRANSIENT demande à Sqlite d'effectuer une copie interne de la chaîne qu'il gérera de manière appropriée. Compte tenu de votre description, c'est probablement ce que vous devriez utiliser. Sinon, vous devrez gérer votre propre copie de chaque chaîne pour chaque déclaration.

Questions connexes