我有一个关于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()主要用于文本或BLOB。
谢谢!
发布于 2012-12-12 15:55:50
当SQLite步进记录时,所有整数值都扩展到64位。
sqlite3_column_int()返回该值的低32位,而不检查是否溢出。
当您调用sqlite3_column_bytes()时,SQLite会将该值转换为文本,并返回字符数。
在读取整数值之前,您无法知道它有多大。然后,您可以检查record format documentation中的列表,以获得该值的最小可能格式,但如果您希望确保整数值永远不会被截断为32位,则必须始终使用sqlite3_column_int64(),或者确保从一开始就不会将较大的值写入数据库(如果可能的话)。
https://stackoverflow.com/questions/13832103
复制相似问题