SQLITE_INTEGER值字节

Lew*_*wis 5 sqlite

我对sqlite3中的数据类型有疑问.

由于值SQLITE_INTEGER可以存储为1,2,3,4,6或8个字节,具体取决于值的大小,如果我只知道SQlite数据库中的列存储SQLITE_INTEGER,我如何知道此列中的值4个字节或6-8个字节的整数,或者应该用哪个来获取值,sqlite3_column_int()或者sqlite3_column_int64()

我可以sqlite3_column_bytes()在这种情况下使用吗?但根据文档,sqlite3_column_bytes()主要用于TEXT或BLOB.

谢谢!

CL.*_*CL. 2

当 SQLite 进入记录时,所有整数值都会扩展为 64 位。
sqlite3_column_int()返回该值的低 32 位,而不检查溢出。

当您调用 时sqlite3_column_bytes(),SQLite 会将值转换为文本,并返回字符数。

在读取整数值之前,您无法知道它有多大。之后,您可以检查记录格式文档中的列表,了解该值的最小可能格式,但如果您想确保整数值永远不会被截断为 32 位,则必须始终使用sqlite3_column_int64(),或确保大值得到首先从未写入数据库(如果可能的话)。