c - sqlite3_bind_text、sqlite3_bind_text16 和 sqlite3_bind_text64 之间有什么区别?

标签 c sqlite

我正在使用 sqlite3 C 接口(interface)。在 https://www.sqlite.org/c3ref/bind_blob.html 阅读文件后,我完全糊涂了。

sqlite3_bind_text、sqlite3_bind_text16 和 sqlite3_bind_text64 有什么区别?

文档只描述了sqlite3_bind_text64可以接受的编码参数包括SQLITE_UTF8、SQLITE_UTF16、SQLITE_UTF16BE或SQLITE_UTF16LE。

所以我猜,根据传递给这些函数的参数,那:

sqlite3_bind_text 用于 ANSI 字符,char * sqlite3_bind_text16 用于 UTF-16 字符, sqlite3_bind_text64 用于上述各种编码。

对吗?

还有一个问题:

文档说“如果 sqlite3_bind_text() 或 sqlite3_bind_text16() 的第四个参数是负数,则字符串的长度是第一个零终止符之前的字节数。”但它并没有说 sqlite3_bind_text64 会发生什么。最初我认为这是一个错字。但是,当我将 -1 作为第四个参数传递给 sqlite3_bind_text64 时,我总是会收到 SQLITE_TOOBIG 错误,这让我觉得他们故意从上面的语句中删除了 sqlite3_bind_text64。对吗?

谢谢

最佳答案

  • sqlite3_bind_text() 用于 UTF-8 字符串。
  • sqlite3_bind_text16() 适用于使用处理器 native 字节顺序的 UTF-16 字符串。
  • sqlite3_bind_text64() 允许您指定特定的编码(utf-8、 native utf-16 或特定的字节序 utf-16)。您可能永远不需要它。
  • sqlite3_bind_blob() 应用于仅被视为二进制 blob 的非 Unicode 字符串;所有 sqlite 字符串函数仅适用于 Unicode。

关于c - sqlite3_bind_text、sqlite3_bind_text16 和 sqlite3_bind_text64 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53921051/

相关文章:

Leetcode "Two Sums"的C解决方案有运行时错误

找不到带 -L/lib/path 的库

c - 配置、制作和安装后如何使用 c 库?

ruby-on-rails - 如何将数据传递给 Rails 3 中的 IN 查询

java - 从另一个 Activity 中检索 Spinner 自定义位置以在另一个 Spinner 中使用

python - 如何在Python中创建空的C类型数组(或只是一个NULL值)?

sql - 在sql中,长度函数是O(1)还是O(length)

java - Android 异步点击时出错

java - 在 Android sqlite 中更新多行

c++ - 宏可以在 #if 中与非数值进行比较吗