加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLITE_INTEGER值字节

发布时间:2020-12-12 19:00:52 所属栏目:百科 来源:网络整理
导读:我对sqlite3中的数据类型有疑问. 由于SQLITE_INTEGER的值可以存储为1,2,3,4,6或8个字节,具体取决于值的大小,如果我只知道SQlite数据库中的列存储SQLITE_INTEGER,我怎么能知道一个值这列是4个字节还是6-8个字节的整数,或者应该用哪个来获取值,sqlite3_column_
我对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(如果可能的话).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读