У меня возникли проблемы с использованием SQLite и параметризованных запросов с несколькими таблицами.Я заметил, что некоторые запросы, использующие SELECT * FROM Table WHERE row=?
, возвращают 1 строку, когда должно быть возвращено больше строк.Если я изменяю параметризованный запрос на SELECT * FROM Table WHERE row='row'
, то возвращается правильное количество строк.
Кто-нибудь знает, почему sqlite3_step
вернет только 1 строку при использовании параметризованного запроса по сравнению с использованием того же запроса втрадиционный непараметрический способ?
Я использую очень тонкую оболочку C ++ для SQLite3.Я подозреваю, что может быть проблема с оберткой, но эта проблема существует только в нескольких таблицах.Это заставляет меня задуматься, если что-то не так с настройкой этих таблиц.Любой совет приветствуется.
РЕДАКТИРОВАТЬ: Вот схема простейшей таблицы, показывающей проблему: CREATE TABLE RefNums (ключ TEXT PRIMARY KEY, TripNumber TEXT, RefDesc TEXT, RefNum TEXT);
Я использую запрос:
SELECT * FROM RefNums WHERE TripNumber =?и используя sqlite3_bind_text.Это возвращает SQLITE_ROW при первом вызове sqlite3_step и возвращает SQLITE_DONE при втором вызове sqlite3_step.Там должно быть 2 ряда.Я проверил существование строк с помощью SQLDataBrowser.Если я изменю запрос на SELECT * FROM RefNumbers WHERE TripNumber = '012345';тогда он работает как положено.