我如何使用 C++ 将 vector 中的多个值插入到 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')");
但我需要从文件或 vector 中读取值
谢谢
最佳答案
我会使用 mysqls 准备好的语句 API 来执行此操作。 你可以看到一个完整的例子here .
您只需遍历重新绑定(bind)到新值的 vector 并重新执行该语句。与手动构建和重新运行查询相比,这可能更有效且更不容易出错(更难遭受 SQL 注入(inject)式攻击)。
另一个选项(IMO 不太好,但更简单,如果您不小心可能会遇到 sql 注入(inject)问题)是遍历在字符串流中构建查询的 vector ,然后使用字符串流缓冲区。
字符串流方法看起来有点像这样(未经测试且可能有错误):
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() );
关于c++ - 使用 C++ 将多个值插入 mysql 数据库表时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5643288/