【问题标题】:sqlite3 preparing, binding and resetting statementssqlite3 准备、绑定和重置语句
【发布时间】:2010-09-29 13:38:52
【问题描述】:

有人能详细说明一下这些功能吗:

sqlite3_reset();
sqlite3_clear_bindings()  

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

我可以使用 sqlite3_clear_bindings() 将 NULL 值分配给这些绑定的参数。 从documentation 可以读到 sqlite3_reset(),不会破坏绑定,值被保留并且对象被置于初始状态。它实际上是什么意思? 尤其是关于不破坏绑定的部分。

【问题讨论】:

  • 绑定时将值复制到stmt是否正确? (除了你必须指定第 5 个参数的 sqlite3_bind_text*() 函数)。

标签: sql database sqlite prepared-statement


【解决方案1】:

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

sqlite3_clear_bindings 只会清除绑定,但不会更改准备好的语句的状态。如果您刚刚清除了绑定,则无法重新执行准备好的语句。

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2014-09-27
    • 2013-06-16
    • 2013-08-31
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多