首页 > 解决方案 > 将 FLOAT 值插入 mysql 表

问题描述

我正在尝试使用(正在使用 C++ 连接器)将 FLOAT 类型的值插入到表中

res = stmt->executeQuery("INSERT INTO `ticker_info`(`a1`,`a2`,`a3`,`b1`,`b2`,`b3`,`c1`,`c2`,`v1`,`v2`,`p1`,`p2`,`t1`,`t2`,`l1`,`l2`,`h1`,`h2`,`o1`) VALUES ('" + a1 + "','" + a2 + "','" + a3 + "','" + b1 + "','" + b2 + "','" + b3 + "','" + c1 + "','" + c2 + "','" + v1 + "','" + v2 + "','" + p1 + "','" + p2 + "','" + t1 + "','" + t2 + "','" + l1 + "','" + l2 + "','" + h1 + "','" + h2 + "','" + o1 + "' " );

创建表如下

CREATE TABLE `ac`.`ticker_info` ( `a1` FLOAT NOT NULL , `a2` INT NOT NULL , `a3` FLOAT NOT NULL , `b1` FLOAT NOT NULL , `b2` INT NOT NULL , `b3` FLOAT NOT NULL , `c1` FLOAT NOT NULL , `c2` FLOAT NOT NULL , `v1` FLOAT NOT NULL , `v2` FLOAT NOT NULL , `p1` FLOAT NO
T NULL , `p2` FLOAT NOT NULL , `t1` INT NOT NULL , `t2` INT NOT NULL , `l1` FLOAT NOT NULL , `l2` FLOAT NOT NULL , `h1` FLOAT NOT NULL , `h2` FLOAT NOT NULL , `o1` FLOAT NOT NULL ) ENGINE = InnoDB;

但是,这失败了

ac.cpp: In function ‘int main(int, char**)’:
ac.cpp:445:161: error: invalid operands of types ‘const char [132]’ and ‘float’ to binary ‘operator+’
  445 |  res = stmt->executeQuery("INSERT INTO `ticker_info`(`a1`,`a2`,`a3`,`b1`,`b2`,`b3`,`c1`,`c2`,`v1`,`v2`,`p1`,`p2`,`t1`,`t2`,`l1`,`l2`,`h1`,`h2`,`o1`) VALUES ('" + a1 + "','" + a2)  + "','" + a3 + "','" + b1 + "','" + b2 + "','" + b3 + "','" + c1 + "','" + c2 + "','" + v1 + "','" + v2 + "','" + p1 + "','" + p2 + "','" + t1 + "','" + t2 + "','" + l1 + "','" + l2 + "','" + h1 + "','" + h2 + "','" + o1 + "' " );
      |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~
      |                           |                                                                                                                                       |
      |                           const char [132]                                                                                                                        float

我在这里做错了什么?我之前真的需要对浮点值进行字符串化吗?我希望我可以按原样提供类型。我搜索了一段时间以寻找解决方案,但看起来我很愚蠢(可能)或者以前没有人遇到过这个问题(不太可能)。不幸的是,文档对我来说也成功地隐藏了这一点。

标签: c++mysqlfloating-pointsql-insertmysql-connector

解决方案


根据@lucumt 的建议,使用参数标记和绑定值解决了这个问题。


推荐阅读