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());

浙公網安備 33010602011771號