sqlite - 如何防止Sqlite未绑定(bind)参数解释为NULL

标签 sqlite data-binding

正如 Sqlite 文档所指定的,准备好的语句中的未绑定(bind)参数被解释为 NULL - 那么我的问题是:

有没有办法让 Sqlite 确保所有参数至少绑定(bind)一次,从而确保不会意外丢失任何参数?

最好是得到一个错误并需要调用 sqlite3_bind_null(statement_, col); 然后得到一个微妙的错误,因为我忘记调用 sqlite3_bind_*更新语句的 where 子句!

最佳答案

使用当前的 SQLite 库无法区分未绑定(bind)参数和设置为 NULL 的参数。

如果您查看sqlite3_bind_null()的C源代码,您会发现它只是调用了解除参数绑定(bind)的内部SQLite函数。因此无法区分这两种情况。

对此的唯一解决方案是用您自己的函数包装 SQLite C API 函数,这些函数将进行一些簿记工作。您可以将位图与每个 sqlite3_stmt 结构捆绑在一起,当且仅当绑定(bind)相应的参数时,每个位都设置为 true。您必须至少为 sqlite3_bind_*() 函数和 sqlite3_clear_bindings() 创建包装器。

关于sqlite - 如何防止Sqlite未绑定(bind)参数解释为NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585336/

相关文章:

python - 从 io.BytesIO 流打开 sqlite3 数据库?

python - 有没有办法使用 Python 在 SQLite 中正确排序 unicode 字符串?

android - SQLite 异常 : no such column: (code 1)

c# - 使用对象数据源时的父子关系

wpf - 为什么我的双向 WPF 绑定(bind)变得分离?

arrays - Angular2,数据也保持绑定(bind)到函数内部的原始变量

angular - 尝试绑定(bind)到 dx-date-box 时,类型 'string | number | Date' 无法分配给类型 'Date'

java - 带有临时类实例的垃圾收集

c# - 绑定(bind)到 WPF 中的 TreeView

ios - 如何在 iPhone 上访问 SQLite 数据库实例?