Есть ли способ без сброса и / или создания нового запроса отменить продвижение входа, которое происходит с sqlite3_step()
?
Нет, как в текущей версии (3.27.2) нет.SQLite3 предоставляет только наборы результатов только для пересылки.
Вы, кажется, уже знаете о возможности сброса подготовленного оператора с помощью sqlite3_reset()
, но я думаю, вы понимаете, что это не то же самое, что шаг назад,даже в сочетании с повторением результатов вперед, вопреки предположению , представленному в ответ на аналогичный вопрос .Сброс отменяет текущий набор результатов, и последующее повторное выполнение подготовленного оператора приводит к выполнению нового запроса с полученными результатами.
Если вы хотите иметь доступ к даннымиз предыдущей строки результатов, пройдя мимо нее и не выполнив новый запрос, вам нужно захватить и сохранить его в какой-то локальной структуре данных.В зависимости от ваших потребностей, это может не быть все данные, которые вы прочитали.С другой стороны, если у вас есть какая-то иная причина, чем перечитывание данных для того, чтобы переместить курсор результирующего набора назад, тогда вам нужно будет найти другой способ достижения любой цели, которая должна служить.