sqlite3 подготовка, привязка и сброс операторов - PullRequest
6 голосов
/ 29 сентября 2010

Может кто-нибудь осветить функции:

sqlite3_reset();
sqlite3_clear_bindings()  

Я понимаю, что могу использовать sqlite3_prepare () для перевода строки SQL в нативный байт-код, который понимает движок. Поэтому двигатель не должен переводить его каждый раз, когда он используется. Я также могу параметризовать такой подготовленный оператор и позже связать с ним значения с помощью sqlite3_bind * () функций.

Я могу присвоить значение NULL этим связанным параметрам с помощью sqlite3_clear_bindings (). Из документации можно прочитать, что sqlite3_reset () не уничтожает привязки, значения сохраняются и объект переводится в исходное состояние. Что это на самом деле означает? Особенно часть о неразрушающих связях.

1 Ответ

3 голосов
/ 29 сентября 2010

sqlite3_reset очищает состояние, которое подготовленный оператор поддерживал во время выполнения. Это возвращает его в исходное состояние, таким образом, «сбрасывая его». Привязки остаются нетронутыми. Заявление может быть выполнено повторно. Не сбрасывая его, вы получите сообщение об ошибке при попытке его выполнить.

sqlite3_clear_bindings просто очистит привязки, но не изменит состояние в подготовленном утверждении. Вы не можете повторно выполнить подготовленный оператор, если вы только что очистили привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...