sqlite3 准备、绑定和重置语句
有人可以更详细地介绍这些功能吗:
sqlite3_reset();
sqlite3_clear_bindings()
我知道我可以使用 sqlite3_prepare() 将 sql 字符串转换为引擎可以理解的本机字节代码。因此引擎不必每次使用时都翻译它。我还可以参数化此类准备好的语句,然后使用 sqlite3_bind*() 函数将值绑定到它。
我可以使用 sqlite3_clear_bindings() 为这些绑定参数分配 NULL 值。 从 文档 可以看出 sqlite3_reset() 不会破坏绑定,其值为保留并将对象置于初始状态。它到底意味着什么? 特别是关于不破坏绑定的部分。
Can someone put more light on the functions:
sqlite3_reset();
sqlite3_clear_bindings()
I understand that I can use sqlite3_prepare() to translate sql string to native byte code which engine understands. Therefor the engine does not have to translate it every time when it is used. I can also parametrize such prepared statement and later bind values to it with sqlite3_bind*() functions.
I can assign NULL value to these binded params with sqlite3_clear_bindings().
From documentation one can read that sqlite3_reset(), does not destroy bindings, the values are preserved and the object is put into initial state. What does it actually mean?
Especially the part about not destroying bindings.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
sqlite3_reset 清除准备好的语句在执行期间维护的状态。这会将其设置回初始状态,从而“重置它”。绑定保持完好。该语句可以重新执行。如果不重置它,当您尝试执行它时将会收到错误。
sqlite3_clear_bindings 只会清除绑定,但不会更改准备好的语句上的状态。如果您刚刚清除了绑定,则无法重新执行准备好的语句。
sqlite3_reset
clears the state that the prepared statement maintained during execution. This sets it back to the initial state, thus "resetting it". Bindings remain intact. The statement can be re-executed. Without resetting it, you will receive an error when you try to execute it.sqlite3_clear_bindings
will just clear the bindings, but not change the state on the prepared statement. You can't re-execute a prepared statement if you just cleared the bindings.