有人可以进一步介绍一下这些功能吗:
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/