首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlite3_bind_text,sqlite3_bind_text16和sqlite3_bind_text64有什么区别?

sqlite3_bind_text,sqlite3_bind_text16和sqlite3_bind_text64有什么区别?
EN

Stack Overflow用户
提问于 2018-12-25 09:30:23
回答 1查看 1.5K关注 0票数 2

我使用的是sqlite3 C接口。在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。对吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-25 09:39:39

  • sqlite3_bind_text()用于UTF-8字符串.
  • sqlite3_bind_text16()用于UTF-16字符串,使用处理器的本机endianness。
  • sqlite3_bind_text64()允许您指定特定的编码(utf-8、本机utf-16或特定的endian utf-16)。你可能永远不需要它了。
  • sqlite3_bind_blob()应该用于非Unicode字符串,这些字符串只是作为二进制blobs处理;所有string函数都只与Unicode一起工作。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53921051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档