SOCI sqlite3 integer 读取64位数据缺失解决方法

原创
2022/04/21 16:10
阅读数 625

sqlite3中的 integer对应SOCI的dt_integer

此时integer在查询的时候 int只拿到32位数值,int64则会崩溃

 

 

#define SELECT_HDBINFO_BY_TIME ("select * from HV_INDEX")
rowset rs = (sql.prepare << SELECT_HDBINFO_BY_TIME);

                 for (const row& rowData : rs)

                 {

                          rowData.

                          //HVarIndex hVarIndex1;

                          //rowData.row<HVarIndex>(hVarIndex1);

                          HVarIndex hVarIndex = { rowData.get<std::string>(0),

                                   rowData.get<Ino_Int64>(1), rowData.get<Ino_Int64>(2)};

 

 

rowData.get<Int64>(1) 程序崩溃,提示不支持int64
rowData.get<int>(1) 只能拿到32位数据

 

2中方案:

1、将sqlite create table字段改为unsigned longlong

2、修改sqlite3中的数据类型 让其支持int64

 

最终将其改为craete sqlite3 table中的integer改为BIGINT,即可支持int64

rowData.get<Int64>

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部