一句话总结
Qt中使用float值通过bindValue插入MySQL的DOUBLE字段失败,需显式转换为double类型解决。
关键词:
float、bindValue、QSqlQuery、double、数据库、MySQL、类型转换、数据库插入
问题:
1、MySQL数据库height字段类型为double;
2、Qt中函数返回值类型为float:float getValue();
3、使用QSqlQuery的bindValue时,float类型数值无法插入到数据库中;
版本:Qt 5.14.2
问题示例代码:
- // 获取数据的方法
- float value = 100.0;
- float getValue()
- {
- return value;
- }
- // 数据库连接
- QSqlDatabase db;
- // 插入语句
- QSqlQuery query(db);
- query.prepare("insert into table_name(height) values (:height);");
- // 绑定数据
- query.bindValue(":height", getValue());
- query.exec();
复制代码 结果发现其他数据都可以正常插入,只有float类型无法插入
解决方法:
以下这几种方法都可行:- // 将float类型转换为double类型
- query.bindValue(":height", double(getValue()));
- query.bindValue(":height", static_cast<double>(getValue()));
- // 数值*1.0,转为double
- query.bindValue(":height", getValue() * 1.0);
- // 直接使用数值
- query.bindValue(":height", 100.0);
- // 修改数据类型
- double value = 100.0;
- double getValue()
- {
- return value;
- }
- query.bindValue(":height", getValue());
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |