我对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.
谢谢!
当 SQLite 进入记录时,所有整数值都会扩展为 64 位。
sqlite3_column_int()返回该值的低 32 位,而不检查溢出。
当您调用 时sqlite3_column_bytes(),SQLite 会将值转换为文本,并返回字符数。
在读取整数值之前,您无法知道它有多大。之后,您可以检查记录格式文档中的列表,了解该值的最小可能格式,但如果您想确保整数值永远不会被截断为 32 位,则必须始终使用sqlite3_column_int64(),或确保大值得到首先从未写入数据库(如果可能的话)。
| 归档时间: |
|
| 查看次数: |
1345 次 |
| 最近记录: |