SQLITE_INTEGER值字节

前端之家收集整理的这篇文章主要介绍了SQLITE_INTEGER值字节前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对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会将该值转换为文本,并返回字符数.

在读取之前,您无法知道整数值有多大.
之后,您可以检查record format documentation中的列表以获取该值的最小可能格式,但是如果要确保整数值永远不会截断为32位,则必须始终使用sqlite3_column_int64(),或者确保使用大值从来没有写过DB(如果可能的话).

猜你在找的Sqlite相关文章