C++使用MySQL事务
305 字
2 分钟
C++使用MySQL事务
1、被调用方法Mysql相关功能:
#include "mysql_server.h"using namespace std;
// 连接数据库void MySQLServer::Init_sql(){ //初始化数据库连接池 m_connPool = connection_pool::GetInstance(); m_connPool->init("localhost", m_user, m_passWord, m_databaseName, 3306, m_sql_num, 0); //先从连接池中取一个连接 MYSQL *mysqll = NULL; connectionRAII mysqlcon(&mysqll, m_connPool); transaction_sql = mysqll;}
// 开始事务bool MySQLServer::beginTransaction() { if (mysql_query(transaction_sql, "START TRANSACTION") != 0) { std::cerr << "Failed to start transaction: " << mysql_error(transaction_sql) << std::endl; return false; } return true;}
// 提交事务bool MySQLServer::commitTransaction() { if (mysql_query(transaction_sql, "COMMIT") != 0) { std::cerr << "Failed to commit transaction: " << mysql_error(transaction_sql) << std::endl; return false; } return true;}
// 回滚事务bool MySQLServer::rollbackTransaction() { if (mysql_query(transaction_sql, "ROLLBACK") != 0) { std::cerr << "Failed to rollback transaction: " << mysql_error(transaction_sql) << std::endl; return false; } return true;}
// 禁用自动提交模式bool MySQLServer::disableAutoCommit() { if (mysql_autocommit(transaction_sql, 0) != 0) { std::cerr << "Failed to disable autocommit: " << mysql_error(transaction_sql) << std::endl; return false; } return true;}
// 启用自动提交模式bool MySQLServer::enableAutoCommit() { if (mysql_autocommit(transaction_sql, 1) != 0) { std::cerr << "Failed to enable autocommit: " << mysql_error(transaction_sql) << std::endl; return false; } return true;}2、主代码
try{ // 开启事务 mysql_server.beginTransaction();
// 多个sql语句执行 // 新增stream_bind_model关联1 if(!mysql_server.insert_stream_bind_model1(stream_id, insert_bind_model_id)){ throw std::runtime_error("setbindAlgorithm: Failed to insert_stream_bind_model1"); } // 新增stream_bind_model关联2 if(!mysql_server.insert_stream_bind_model2(stream_id, insert_bind_model_id)){ throw std::runtime_error("setbindAlgorithm: Failed to insert_stream_bind_model2"); }
mysql_server.commitTransaction();} catch (const std::exception& ex) { // 如果任意更新操作失败,回滚事务 mysql_server.rollbackTransaction(); cout<<"setbindAlgorithm:"<< std::string(ex.what())<<endl;}支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章 智能推荐
1
C++配置使用MySQL
开发笔记 1、Linux安装MySQL 这里以Ubuntu系统为例 安装完之后还要配置mysql相关连接设置 2、安装其它需要的依赖库 3、配置MySQL 参考推荐链接:https://blog.csdn.net/weixin 45626288/article/details/133220
2
FreeType编译与使用
开发笔记 1、linux系统编译安装opencv linux系统中编译安装opencv是开启了freetype的使用,后续则可以直接在C++代码中实现,无需额外编译安装freetype。 2、额外编译安装使用FreeType 注意freetype版本和opencv版本的兼容性 这里编译的是
3
MySQL数据库设计规则
开发笔记 MySQL数据库设计规则 1、字段命名 2、字段类型 1 10之间的10个数字,每个数字1个字节就能保存,选择tinyint更为合适。 1 、尽可能选择占用存储空间小的字段类型,在满足正常业务需求的情况下,从小到大,往上选。 2 、如果字符串长度固定,或者差别不大,可以选择cha
4
boost使用CMake和MinGW-w64的编译安装
开发笔记 1.环境 操作系统: Windows 10 Boost 版本: 1.84.0 GCC 版本: mingw x64 CMake 2. Boost 库编译安装 1. 下载解压 Boost 源码,并解压 官网链接:https://www.boost.org/users/history/
5
Eigen使用CMake和MinGW-w64的编译安装
开发笔记 1.环境 平台: Windows 10 编译器: mingw , gcc/g++ CMake Eigen 版本:3.4.0 2. 编译安装 1.官网下载源码 https://eigen.tuxfamily.org/index.php?title=Main Page 2.打开 cm
随机文章 随机推荐