2011-04-13 38 views
1

如何从矢量插入多个值到MySQL数据库表使用c + + I.e mysql C++连接器未安装。有问题插入多个值到MySQL数据库表使用c + +

我的代码

#include cstdlib 
#include iostream 
#include mysql.h 
using namespace std; 

MYSQL *connection, mysql; 
MYSQL_RES *result; 
MYSQL_ROW row; 
int query_state; 

我可以手动插入一行是这样的:

query_state=mysql_query(connection,"insert into test values('boy','girl')"); 

但我需要从文件或矢量值读取

感谢

+0

欢迎#1。请使用'{}'按钮在您的问题中格式化代码。 – 2011-04-13 01:15:39

回答

1

我'使用mysqls准备语句API来做到这一点。 您可以看到一个完整的示例here

您只需遍历向量重新绑定到新值并重新执行语句。与手动构建和重新运行查询相比,这可能会更有效,更不容易出错(更难受SQL注入类型攻击)。

另一种选择(不如IMO好,但更简单,如果不小心可能会遇到sql注入问题)是循环遍历在stringstream中构造查询的向量,然后使用stringstream缓冲区。

字符串流的方法,看起来有点像这样(未经测试,可能是电瓶车):

vector<pair<string,int> > values = get_my_values(); 
stringstream query; 
query<<"insert into test values"; 
for(vector<pair<string,int> >::iterator it = values.begin() ; 
    it != values.end(); 
    ++it) 
{ 
    query<<"(\""<<mysql_real_escape(connection, it->first.c_str())<<"\","<<it->second<<")"; 
    if(it+1 != values.end()) { query<<","; } 
} 
query_state=mysql_query(connection, query.str().c_str()); 
+0

@彼得史密斯感谢这非常有帮助。 – airMan 2011-04-15 21:17:52