Qt中float转double解决bindValue插入MySQL中DOUBLE字段问题
一句话总结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());
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]