MySql Connector/C++8事务处理Demo
#include <iostream>
#include <exception>
#include <vector>
#include <unistd.h>
#include <mysqlx/xdevapi.h>
#define D_USER	"root"
#define D_PWD	"mysql"
#define D_HOST	"localhost"
#define D_PORT	33060
#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<std::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;
}
												
											MySql Connector/C++8事务处理Demo的更多相关文章
- mysql Connector C++ 操作数据库 vs2012
		
最近想写一个应用程序,要连接和操作mysql数据库,以前只是用c++ builder 操作过mysql数据库,那是用控件操作的,感觉比较弱智,但是c++ builder vcl控件感觉在多线程里比较坑 ...
 - mysql.connector 事务总结
		
mysql.connector事务总结: connection.autocommit = 0 (默认值) 事务处理 使用 connection.commit()方法 #!/usr/bin/env py ...
 - 创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL
		
创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL 用惯.NET的研发人员都习惯性地使用SQLServer作为数据库.然而.NET Core ...
 - vc++2013中使用MySQL connector/C++ 1.1.4静态链接报错
		
包含头文件 #include <mysql_connection.h> #include <mysql_driver.h> #include <cppconn/state ...
 - Using MySQL Connector .NET 6.6.4 with Entity Framework 5
		
I had been waiting for the latest MySQL connector for .NET to come out so I can move on to the new a ...
 - [转]MySQL Connector/C++(一)
		
http://www.cnblogs.com/dvwei/archive/2013/04/18/3029464.html#undefined#undefined MySQL Connector/C++ ...
 - mysql.connector操作mysql的blob值
		
This tutorial shows you how to work with MySQL BLOB data in Python, with examples of updating and re ...
 - Ubuntu & MacOS安装Mysql & connector
		
Ubuntu & MacOS安装Mysql & connector 1. 安装MySql sudo apt-get install mysql-server apt-get insta ...
 - Snippet: Fetching results after calling stored procedures using MySQL Connector/Python
		
https://geert.vanderkelen.org/2014/results-after-procedure-call/ Problem Using MySQL Connector/Pytho ...
 
随机推荐
- flex布局的一些注意点
			
现在来总结下自己在项目中用flex布局的一些注意点 1.ui图中的布局方式与justify-content的布局方法不一样 这是就要利用flex-grow的空dom来分开子容器来达到页面布局的效果 2 ...
 - vue学习笔记之基础篇
			
本文主要记录学习vue的一些基础内容及常用知识点的记录. 1.搭建脚手架 vue init webpack vue-demo 初始化一个使用webpack打包的vue项目 npm install 安装 ...
 - js实现螺旋纹理特效
			
效果如下 实现代码如下: <!doctype html> <html> <head> <meta charset="UTF-8" ...
 - css 平行四边
			
在视觉设计中,平行四边形往往给人一种动感. 要生成一个平行四边形,只要通过css变形,就可做到: -webkit-transform: skewX(-45deg); 那么生成一个平行四边形的按钮呢?列 ...
 - 统计学中的P值与显著性的意义
			
统计学意义(p值) 结果的统计学意义是结果真实程度(能够代表总体)的一种估计方法.专业上,p值为结果可信程度的一个递减指标,p值越大,我们越不能认为样本中变量的关联是总体中各变量关联的可靠指标.p值是 ...
 - mac 上配置 maven
			
1. 将maven压缩包解压至/Users/suqiuhui/Applications目录下的新建文件夹dev下 2. 打开终端(系统根目录,~/下) 3. 如果没有 .bash_profile 文件 ...
 - oracle 12c使用dblink克隆pdb
			
Multitenant : Hot Clone a Remote PDB or Non-CDB in Oracle Database 12c Release 2 (12.2)https://oracl ...
 - 我的HTML总结之HTML发展史
			
HTML是Web统一语言,这些容纳在尖括号里的简单标签,构成了如今的Web. 1991年,Tim Berners-Lee编写了一份叫做“HTML标签”的文档,里面包含了大约20个用来标记网页的HTML ...
 - MyEclipse2015Stable3.0破解方法
			
原理大概是这样的(个人粗略分析):获取当前的日期,来设置证书失效日期,解析后生成码-->再转码,最后生成序列号. 1.新建一个Java工程,(不会安装jdk创建环境变量的,请前往传送门:链接.) ...
 - 每日linux命令之kill
			
1.命令格式: kill[参数][进程号] 2.命令功能: 发送指定的信号到相应进程.不指定型号将发送SIGTERM(15)终止指定进程.如果任无法终止该程序可用“-KILL” 参数,其发送的信号为S ...