找回密码
 立即注册
首页 业界区 安全 Qt中float转double解决bindValue插入MySQL中DOUBLE字段 ...

Qt中float转double解决bindValue插入MySQL中DOUBLE字段问题

益竹月 3 天前
一句话总结

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


问题示例代码:
  1. // 获取数据的方法
  2. float value = 100.0;
  3. float getValue()
  4. {
  5.     return value;
  6. }
  7. // 数据库连接
  8. QSqlDatabase db;
  9. // 插入语句
  10. QSqlQuery query(db);
  11. query.prepare("insert into table_name(height) values (:height);");
  12. // 绑定数据
  13. query.bindValue(":height", getValue());
  14. query.exec();
复制代码
结果发现其他数据都可以正常插入,只有float类型无法插入
解决方法:

以下这几种方法都可行:
  1. // 将float类型转换为double类型
  2. query.bindValue(":height", double(getValue()));
  3. query.bindValue(":height", static_cast<double>(getValue()));
  4. // 数值*1.0,转为double
  5. query.bindValue(":height", getValue() * 1.0);
  6. // 直接使用数值
  7. query.bindValue(":height", 100.0);
  8. // 修改数据类型
  9. double value = 100.0;
  10. double getValue()
  11. {
  12.     return value;
  13. }
  14. query.bindValue(":height", getValue());
复制代码

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册