"Dr. sqlite3_bind_text"与"Mr. sqlite3_column_text"之谜

"Dr. sqlite3_bind_text" and "Mr. sqlite3_column_text" Mystery

本文关键字:text sqlite3 column 之谜 Mr bind Dr      更新时间:2023-10-16

为什么sqlite3_column_text返回unsigned char *
但是sqlite3_bind_text需要const char *.

当您要在数据库中存储字节数组时,这可能会感兴趣。

如果你想存储一些字节数组(不是以null结尾的字符串),你应该使用sqlite3_bind_blob而不是sqlite3_bind_text(它需要一个文本,即一个以null结尾的字符串)。

如果您知道您正在处理以 null 结尾的字符串,请使用 sqlite3_bind_text ,也许带有强制转换以(const char*);在 C 中,强制转换不会在运行时更改任何数据(除了与浮点数或更大或更小的整数类型的数字转换),它们只是更改编译时类型(至少对于常见系统上的指针类型)。

(在上个世纪,一些奇怪的机器 - 例如Cray1 - 具有不同的指针类型大小,例如 char*指针的位数与int*指针)的位数不同)。