Qt问题记录001: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());

posted @ 2025-06-10 11:12  薄暮知秋  阅读(46)  评论(0)    收藏  举报
/*https://www.cnblogs.com/lingr7/p/15651906.html*/ /*自动显示目录导航*/