Existe-t-il un moyen de voir ce que 'showStatement' est après sqlite3_prepare_v2 et sqlite3_bind_xxx?Débogage de sqlite
L'exécution de cette requête:
SELECT *
FROM shows, locations
WHERE (shows.day_id = 1)
AND (shows.id IN (6,7,15,19,23,66))
AND (shows.location_id = locations.id)
ORDER by locations.sort_order
fonctionne parfaitement dans SQLite Manager et dans le code quand je rentre EXACTEMENT comme ça. Si je fais cependant substitution de paramètre la requête renvoie aucun résultat ...
if (sqlite3_open([databasePath UTF8String],&showsDatabase) == SQLITE_OK){
const char *sqlStatement = "SELECT * FROM shows, locations WHERE (shows.day_id = ?) AND (shows.id IN (?)) AND (shows.location_id = locations.id) ORDER by locations.sort_order";
sqlite3_stmt *showStatement;
if(sqlite3_prepare_v2(showsDatabase, sqlStatement, -1, &showStatement, NULL) == SQLITE_OK) {
sqlite3_bind_int(showStatement, 1, forDay);
sqlite3_bind_text(showStatement, 2, allFavorites,-1,NULL);
int error = sqlite3_step(showStatement);
while(sqlite3_step(showStatement) == SQLITE_ROW) {
...
Le problème doit se situer dans le IN (6,7 ...) partie, sans que cela fonctionne parfaitement .
Mon débogueur me montre que Forday = 1 et que allFavorites = 6,7,15,19,23,66 mais l'erreur = 101 = sqlite3_step() a terminé son exécution = aucune ligne trouvée
Pouvoir pour voir la variable 'showStatement' d'une manière ou d'une autre résoudrait le problème, cependant le débogueur ne donne pas cette information
duplication possible de [Obtenir la requête SQL d'origine de l'instruction préparée dans SQLite] (http://stackoverflow.com/questions/1397924/get-original-sql-query-from-prepared-statement-in-sqlite) –