c++ - 使用 C++ 将多个值插入 mysql 数据库表时出现问题

标签 c++ mysql database function insert

我如何使用 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/

相关文章:

java - 您能否在将数据库上传到我的网站时在 Java 应用程序与 Access 数据库之间创建连接

php - 为 Joomla 或 PHP 网站准备 Mysql 数据库

php - SQLSTATE[HY000] [1698]-Laravel-6.5.1

c++ - C++ : variable is not referenced at all, 中的意外行为,但其值仍发生变化

c++ - 停止 xsd.exe 从 xsd 模式自动生成 C++ 头文件

c++ - 使用堆栈和队列 C++ 的回文检测器

MySQL 数据库。 Web 应用程序有多少?

c++ - 为什么在 C++ 中将派生类对象传递给具有基类参数的函数时应该传递引用而不是值?

php - Django 为同一模型创建不同的表

c# - Connection.open 无限期挂起,不抛出异常