我对sqlite3中的数据类型有疑问。
由于SQLITE_INTEGER
的值可以存储为1,2,3,4,6或8个字节,具体取决于值的大小,如果我只知道SQlite数据库中的列存储{{ 1}},如何知道此列中的值是4个字节还是6-8个字节的整数,或者应该使用哪个值来获取值SQLITE_INTEGER
或sqlite3_column_int()
?
在这种情况下我可以使用sqlite3_column_int64()
吗?但根据文档,sqlite3_column_bytes()
主要用于TEXT或BLOB。
谢谢!
答案 0 :(得分:2)
当SQLite进入记录时,所有整数值都扩展为64位
sqlite3_column_int()
返回该值的低32位而不检查溢出。
当您致电sqlite3_column_bytes()
时,SQLite会将该值转换为文字,并返回字符数。
在读取之前,您无法知道整数值有多大。
之后,您可以检查record format documentation中的列表以获取该值的最小可能格式,但如果您想确保整数值永远不会截断为32位,则必须始终使用sqlite3_column_int64()
,或者确保首先从不将大值写入数据库(如果可能的话)。