c++ mysql 事务_MySql Connector/C++8事务处理Demo

本文展示了如何在C++中利用MySQL Connector/C++库进行事务处理,包括开启事务、设置保存点、插入数据、删除数据以及回滚和提交事务的步骤。代码示例详细演示了如何在遇到错误时回滚到特定保存点。
摘要由CSDN通过智能技术生成

#include

#include

#include

#include

#include

#define D_USER"root"

#define D_PWD"mysql"

#define D_HOST"localhost"

#define D_PORT33060

#define D_DB"D_COMPANY"

using std::cout;

using std::endl;

int main(void)

try

{

//创建会话

mysqlx::Session sess(

mysqlx::SessionOption::USER, D_USER,

mysqlx::SessionOption::PWD, D_PWD,

mysqlx::SessionOption::HOST, D_HOST,

mysqlx::SessionOption::PORT, D_PORT,

mysqlx::SessionOption::DB, D_DB,

mysqlx::SessionOption::SSL_MODE, mysqlx::SSLMode::DISABLED

);

//打开事务,之后的DDL或DML操作都要手动提交或回滚

cout << ">> turn on transaction." << endl;

sess.startTransaction();

//存储保存点

std::vector<:string> savepoints;

cout << ">> insert into t_dept." << endl;

savepoints.emplace_back(sess.setSavepoint()); //设置保存点

mysqlx::SqlStatement stmt = sess.sql("INSERT INTO T_DEPT VALUES(?, ?, ?)");

stmt.bind(40, "OPERATIONS", "BOSTON");

stmt.execute();

cout << ">> insert into t_dept." << endl;

savepoints.emplace_back(sess.setSavepoint());

stmt = sess.sql("INSERT INTO T_DEPT VALUES(?, ?, ?)");

stmt.bind(50, "ENGINEER", "BeiJing");

stmt.execute();

cout << ">> delete from t_dept." << endl;

savepoints.emplace_back(sess.setSavepoint());

mysqlx::SqlResult rset = sess.sql("DELETE FROM T_DEPT WHERE DEPTNO=40").execute();

for(std::string str : savepoints) {

cout << str << endl;

}

sess.rollbackTo(savepoints.at(2)); //回滚到指定保存点

sess.commit(); //提到事务

sess.close(); //关闭会话

cout << "Done!" << endl;

}

catch (mysqlx::Error &err)

{

cout << "ERROR : " << err << endl;

return -1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值