7
votes

Obtenez une requête SQL originale de la déclaration préparée dans SQLite

J'utilise SQLite (3.6.4) à partir d'une application C ++ (à l'aide de l'API Standard C). Ma question est la suivante: une fois qu'une requête a été préparée, en utilisant sqlite3_prepare_v2 () code> et lié avec des paramètres à l'aide de sqlite3_bind_xyz () code> - y a-t-il un moyen d'obtenir une chaîne contenant l'original Query SQL?

La raison est quand quelque chose ne va pas, j'aimerais imprimer la requête (pour le débogage - il s'agit d'une application de test de développeur interne). P>

Exemple: P> >

sqlite3_prepare_v2(db, "SELECT * FROM xyz WHERE something = ? AND somethingelse = ?", -1, &myQuery, NULL);
sqlite3_bind_text(myQuery, 1, mySomething);
sqlite3_bind_text(myQuery, 2, mySomethingElse);
// ....

// somewhere else, in another function perhaps
if (sqlite3_step(myQuery) != SQLITE_OK)
{
     // Here i'd like to print the actual query that failed - but I 
     // only have the myQuery variable
     exit(-1);
}


0 commentaires

3 Réponses :




4
votes

Vous voulez probablement utiliser SQLITE3_TRACE

Ceci appellera une fonction de rappel (que vous définissez) et sur les paramètres est un char * de la SQL des énoncés préparés (y compris les paramètres liés).


0 commentaires