C++中的动态MySQL查询

C++中的动态MySQL查询,c++,mysql,C++,Mysql,我有一个疑问-> LOAD DATA INFILE 'hello2.csv' INTO TABLE failure_report.master_entry FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 2 ROWS 在C++中,我有->< /P> string h1="hello2.csv"; string h2; ostringstream strstr; strstr <<

我有一个疑问->

LOAD DATA INFILE 'hello2.csv' 
INTO TABLE failure_report.master_entry
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n' 
IGNORE 2 ROWS
在C++中,我有->< /P>
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());

myqLyQuy确实返回0,但数据库未更新。myqLyBoeLoad为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";
还要注意每行末尾的空格


将来使用printfExecuting查询:%s、h2和用于调试。

我认为问题在于您在语句周围使用开首引号和结束引号的方式,以及执行caping


请提供从现在开始工作的输出现在mysql\u查询返回0,但我的数据库未得到更新。这应该是要回答的注释,而不是问题:但无论如何,PrintFeExecuting查询的输出是什么:%s,h2或std::我可以把一些事情修好,但现在出现了新问题。请看question@user3819404如果直接从mysql客户端运行查询,会发生什么?你提交数据了吗?是的,如果我在mysql客户端中运行,它工作得很好。如果你添加mysql_querycon,commit;;,会怎么样@user3819404它报告的受影响行数如何,显示警告如何?
strstr << "LOAD DATA INFILE '" << h1 << "' INTO TABLE failure_report.master_entry FIELDS  TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\\n' ignore 2 rows";