有问题使用c ++将多个值插入mysql db表

时间:2011-04-13 00:55:31

标签: c++ mysql database function insert

如何使用c ++将多个值从矢量插入到mysql数据库表中?未安装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')");

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

由于

1 个答案:

答案 0 :(得分:1)

我会使用mysqls prepared statement API来执行此操作。 您可以看到完整的示例here

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

另一个选项(不是很好的IMO,但更简单,如果你不小心可能会遭受SQL注入问题)是在字符串流中构建查询的向量循环,然后使用字符串流缓冲区。

字符串流方法看起来有点像这样(未经测试且可能有错误):

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() );