如何使用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')");
但我需要从文件或向量中读取值
由于
答案 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() );