我使用的是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。对吗?
谢谢
发布于 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一起工作。https://stackoverflow.com/questions/53921051
复制相似问题