- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我对 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()
,或者确保从一开始就不会将大值写入数据库(如果可能的话)。
关于SQLITE_INTEGER 值字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13832103/
我对 sqlite3 中的数据类型有疑问。 SQLITE_INTEGER 的值可以根据值的大小存储在 1、2、3、4、6 或 8 个字节中,如果我只知道 SQlite 数据库中的列存储SQLITE_I
我正在处理遗留项目并发现了一个问题。该代码正在从 sqlite 数据库中读取。它执行查询并遍历语句,然后为每一列获取列名和列值。 要获取值,它会调用 sqlite3_column_type。然后它检查
我是一名优秀的程序员,十分优秀!