Есть ли способ узнать, что будет в результате 'showStatement' после sqlite3_prepare_v2 и sqlite3_bind_xxx?
Выполнение этого запроса:
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
отлично работает в SQLite Manager и в коде, когда я ввожу его ТОЧНО так. Однако, если я делаю подстановку параметров, запрос не возвращает результатов ...
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) {
...
Проблема должна заключаться в части IN (6,7 ...), без которой она работает идеально.
Мой отладчик показывает мне, что forDay = 1 и что allFlected = 6,7,15,19,23,66
но ошибка = 101 = sqlite3_step () завершила выполнение = строки не найдены
Возможность увидеть переменную 'showStatement' тем или иным образом решит проблему, однако отладчик не предоставляет эту информацию