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;
}

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
C++使用MySQL事务
https://firefly.cuteleaf.cn/posts/obsidian/cpp使用mysql事务/
作者
Firefly
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0
随机文章 随机推荐
Profile Image of the Author
Firefly
Hello, I'm Firefly.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
85
分类
5
标签
11
总字数
50,344
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.12.3
文章许可
CC BY-NC-SA 4.0

文章目录