c ++中的动态mysql查询

时间:2014-07-10 12:55:50

标签: 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 ++中我有 - >

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。

2 个答案:

答案 0 :(得分:0)

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

\\n

另请注意行尾的每个strstr << "LOAD DATA INFILE '" << h1 << "' " << "INTO TABLE failure_report.master_entry " << "FIELDS TERMINATED BY ',' " << "ENCLOSED BY '\"' " << "LINES TERMINATED BY '\\n' " << "IGNORE 2 ROWS"; 前的空格。

将来使用"mysql_error()进行调试。

答案 1 :(得分:0)

我认为问题在于您使用围绕语句打开和关闭'引号的方式,并且重新开始"

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