c语言mysql数据库事务开始、提交、回滚范例

1、 事务提交模式修改:修改数据库提交模式为0[手动提交]

memset ( sql, 0x00, sizeof( sql ) );

memcpy ( sql, "set autocommit=0;", 17 );

if( mysql_query( sock, sql ) ){

sprintf( g_acTrcMsg, "关闭自动提交模式失败[%d][%s]", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1

return -1;

}

2、 事务开始

memset ( sql, 0x00, sizeof( sql ) );

memcpy ( sql, "start transaction;", 18 );

if( mysql_query( sock, sql ) ){

sprintf( g_acTrcMsg, "建立事务失败[%d][%s]", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1

return -1;

}

3、 事务回滚

memset ( sql, 0x00, sizeof( sql ) );

memcpy ( sql, "rollback;", 9 );

if( mysql_query( sock, sql ) ){

sprintf( g_acTrcMsg, "事务回滚失败[%d][%s]", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1

return -1;

}

4、 事务提交

memset ( sql, 0x00, sizeof( sql ) );

memcpy ( sql, "commit;", 7 );

if( mysql_query( sock, sql ) ){

sprintf( g_acTrcMsg, "提交事务失败[%d][%s]\n", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1

return -1;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 08:23:48

c语言mysql数据库事务开始、提交、回滚范例的相关文章

java语言MySQL数据库事务的处理

事务处理流程 1.屏蔽自动提交功能 2.处理事务 3.恢复自动提交功能 代码实例 执行程序之前数据表的样子 import java.sql.*; public class GetConnection{ public static void main(String[] args){ Access2Database adb=new Access2Database(); Connection conn=adb.getConn(); //transaction dealing PreparedState

Go语言开发(十八)、Go语言MySQL数据库操作

Go语言开发(十八).Go语言MySQL数据库操作 一.MySQL数据库驱动 1.MySQL数据库驱动简介 Go语言官方没有实现MySQL数据库驱动,常用的开源MySQL数据库驱动实现如下:(1)Go MySQL DriverGo MySQL Driver支持database/sql接口,全部采用Go语言实现.官方网站:https://github.com/go-sql-driver/mysql/(2)MyMySQLMyMySQL支持database/sql接口,也支持自定义的接口,全部采用Go

MySQL 数据库事务与复制

好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,而是在应用技术. 为了更有效率与效果的用好技术,我们需要了解一些技术的原理与工作方式. 带着问题从使用者的角度去剖析技术原理,并将开源技术产品和框架作为一类技术的参考实现来讲解. 以讲清原理为主要目的,对于具体实现的技术细节若无特别之处则尽可能点到即止.

MySQL数据库事务隔离级别(Transaction Isolation Level)

今天在学习JDBC的时候看到了关于MySql的事务的隔离级别的问题,感觉内容挺高级的,所以记录一篇文章,以备后面使用. 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. 2 [mysqld] 3 transaction-isolation = R

php中对MYSQL操作之事务控制,回滚

<?php //事务控制,回滚 //创建一个mysqli对象 $mysqli = new MySQLi("主机名","mysql用户名","密码","数据库名"); //判断是否链接成功 if($mysqli->connect_error){ die($mysqli->connect_error); } //由于在事务提交中系统默认提交,故这里设置为FALSE先不提交 $mysqli->autocomm

mysql数据库事务详细剖析

在写之前交代一下背景吧! 做开发也好久了,没怎么整理过知识,现在剖析一下自己对数据库事务的认识,以前用sqlserver,现在转java后又用mysql.oracle.我这块就主要解释一下mysql数据库事务.其实好多内容适用于各种标准数据库! 直接就进入正文了! 不管是做啥都有理论知识,我在这块也介绍一下. 事务的特性 1.原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. 2.一致性(Consistency):在一个事务中,事务前后数

MySQL数据库事务各隔离级别加锁情况--read committed &amp;&amp; MVCC(转)

本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解.这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解. 前言 可以很负责人的跟大家说,MySQL 中的此隔离级别不单单是通过加锁实现的,实际上还有repeatable read 隔离级别,其实这两个隔离级别效果的实现还需要一个辅助,这个辅助就是MVCC-多版

Spring事务控制和回滚

1在一个项目中ssh结构,spring2.5,事务控制采用的是tx拦截器的方式. 自己写了个 int a=1/0;异常抛出了,但是事务还是提交了,怎么搞都不行. 现将看到的一些事务控制总结下来: 事务控制默认回滚RuntimeException(数组越界,结果为0等),并且是notchecked异常. 注意:sql内部出现异常默认不会回滚 如果在Service中有 try ..catch的形式,则无法抛出异常,不会回滚.因此需要在catch中throw new runtimeException在

SVN 提交回滚

取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svn revert就能取消之前的修改. svn revert用法如下: # svn revert [-R] something 其中something可以是(目录或文件的)相对路径也可以是绝对路径. 当something为单个文件时,直接svn revert something就行了:当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的改动