有人可以进一步介绍一下这些功能吗:

sqlite3_reset();
sqlite3_clear_bindings()

我知道我可以使用 sqlite3_prepare()将sql字符串转换为引擎可以理解的 native 字节码。因此,引擎不必在每次使用时都进行翻译。我还可以参数化这样准备好的语句,然后使用 sqlite3_bind *()函数将值绑定(bind)到该语句。

我可以使用sqlite3_clear_bindings()将NULL值分配给这些绑定(bind)的参数。
documentation可以看到sqlite3_reset()不会破坏绑定(bind),保留值并将对象置于初始状态。这到底是什么意思?
特别是关于不破坏绑定(bind)的部分。

最佳答案

sqlite3_reset清除准备好的语句在执行期间保持的状态。这会将其设置回初始状态,从而“将其重置”。绑定(bind)保持不变。该语句可以重新执行。如果不重置它,则在尝试执行它时会收到错误消息。
sqlite3_clear_bindings只会清除绑定(bind),而不会更改准备好的语句的状态。如果您仅清除绑定(bind),则无法重新执行准备好的语句。

关于sqlite3准备,绑定(bind)和重置语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3822115/

10-11 20:52
查看更多