2012-12-12 21 views
5

我有一个关于sqlite3中的数据类型的问题。SQLITE_INTEGER值字节

作为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。

谢谢!

回答

1

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

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

在读取它之前,您无法知道整数值有多大。 之后,您可以在record format documentation中查看该值的最小可能格式的列表,但是如果要确保该整数值永不会被截断为32位,则必须始终使用使用sqlite3_column_int64(),或确保大值得从未写入数据库(如果可能的话)。

+0

谢谢!所以我想我必须首先获取sqlite3_column_int64()的值,然后将其截断为32位,如果它在32位值的范围内。任何其他方法? – Lewis