批量插入 Mysql C++连接器
Batch Insert in Mysql C++ Connector
我们使用 mysql 连接器进行 c++(官方库(,但是 c++ 库中没有batchupdate
或batchinsert
方法(尽管在 java 中确实存在这些方法(。
为了完成此操作,我尝试了如下所示的方法,并且它奏效了。但是,在这种情况下,如果我们每分钟插入数千行数据,则在大约 30 分钟内,mysql 会消耗我们计算机中的所有内存(具有 32G 内存(。
这种用法是错误的吗,如果是这样,我们应该怎么做?(我们在循环中运行了下面的代码(:
try {
//autoClose parameter is false in our case
if (!autoClose) {
con->setAutoCommit(false);
}
stmt = con->prepareStatement(queryBuilder);
this->setPreparedStatements(insertData);
result = stmt->executeUpdate();
stmt->close();
if (getAutoGeneratedKey) {
std::string lastIdQuery = "SELECT LAST_INSERT_ID()";
stmt = con->prepareStatement(lastIdQuery);
ResultSet *rs = stmt->executeQuery();
while (rs->next()) {
result = rs->getInt(1);
}
rs->close();
delete rs;
stmt->close();
}
if (autoClose) { //autoClose parameter is false in our case
con->close();
}
谢谢
您忘了删除预准备语句 stmt。
https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-prepared-statements.html
注意
您必须使用 delete 显式释放 sql::P reparedStatement 和 sql::Connection 对象。
相关文章:
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 使用mysql c++连接器的未定义引用
- MySQL C++连接器链接错误
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- C++MySQL连接器没有utf8
- 如何在连接器 C++ 中将原始字节转换为字符串
- MySQL 连接器/C++.尝试在此过程中停止连接到数据库
- 获取具有字段名称的 SELECT 字段类型,并带有 MariaDB C++连接器
- 如何使用连接器 c++ 在 mySQL 表二进制(16) 字段中存储 c++ 字节数组?
- MySQL C++连接器循环
- MySQL c++ 连接器:使用 SetBlob() 在查询中设置多个 blob 数据的正确方法是什么?
- 在 C/C++ 中使用 MySQL 连接器执行插入到表时出错
- 无法在我的ubuntu中正确安装MySQL连接器/c++
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- mysql c ++连接器异常:用户"root"@'localhost'的访问被拒绝(使用密码:NO)&&MySQL服务器已消失
- MySQL 连接器 CPP 在 CentOS 6 中未定义的引用
- 在Windows上编译MariaDB C/C++连接器
- MySQL C++连接器:添加符号时出错:文件格式无法识别
- Cassandra C++连接器:地址已更改
- MySQL连接器C 结果集被缓冲