c++中的动态mysql查询

dynamic mysql query in c++

本文关键字:mysql 查询 动态 c++      更新时间:2023-10-16

我有一个查询->

LOAD DATA INFILE 'hello2.csv' 
INTO TABLE failure_report.master_entry
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY 'n' 
IGNORE 2 ROWS
在c++中我有->
string h1="hello2.csv";
string h2;
ostringstream strstr;
strstr << "LOAD DATA INFILE'" << h1 << "'INTO TABLE failure_report.master_entry    FIELDS  TERMINATED BY'"<<","<<"'ENCLOSED BY '"<<'"'<<"'LINES TERMINATED BY '"<<"n"<<" '  ignore 2 rows";
h2=strstr.str();
int query_state=mysql_query(con,h2.c_str());

mysql_query返回0,但是数据库没有更新。Mysql_error是null

您缺少一些单词和撇号之间的空格'和转义n(它在c++中也有特殊意义,只有文字新行被发送到mysql服务器,您必须使用\n),尝试使用:

strstr << "LOAD DATA INFILE '" << h1 << "' " 
       << "INTO TABLE failure_report.master_entry "
       << "FIELDS  TERMINATED BY ',' "
       << "ENCLOSED BY '"' "
       << "LINES TERMINATED BY '\n' "
       << "IGNORE 2 ROWS";

还要注意行尾每个"前的空格。

以后使用printf("Executing query: %s", h2)mysql_error()进行调试

我认为问题在于您在语句周围使用'引号和"引号的方式。

strstr << "LOAD DATA INFILE '" << h1 << "' INTO TABLE failure_report.master_entry FIELDS  TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ignore 2 rows";