C# 数据回滚

public  int GetExecteQuery(string strAddSql, string strUpdateSql, string strDelSql)
        {
            SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["GPSP_SQL"]);//实例化数据连接
            //SqlConnection conn = new SqlConnection(CONN_STRING);
            conn.Open();
            SqlCommand command = conn.CreateCommand();

            SqlTransaction transaction = null;
            transaction = conn.BeginTransaction();
            command.Connection = conn;
            command.Transaction = transaction;
            int count = 0;

            try
            {
                if (strAddSql != "")
                {
                    command.CommandText = “insert into A.....”;
                    command.ExecuteNonQuery();
                }
                if (strUpdateSql != "")
                {
                    command.CommandText = “insert into B.....”;
                    count = command.ExecuteNonQuery();
                }
                if (strDelSql != "")
                {
                    command.CommandText = “insert into C.....”;
                    count = command.ExecuteNonQuery();
                }
                transaction.Commit();
            }
            catch
            {

                transaction.Rollback();
            }

            return count;
        }

C# 数据回滚

时间: 2024-10-12 15:30:32

C# 数据回滚的相关文章

错删之前的数据回滚

执行如下sql语句,可对之前删掉的数据回滚: Insert into CRM_ORDER  select *    from  CRM_ORDER as of timestamp to_timestamp('2016-04-23 01:40:00','yyyy-mm-dd hh24:mi:ss')

【MySQL】通过Binary Log简单实现数据回滚(一)

一.前言 对,没错,我又水了好一阵子,深刻反思寄几.前段时间,工作项目上出于对excel等批量操作可能出现误操作的问题,要求提供一个能够根据操作批次进行数据回滚的能力.在开发的过程中接触到了MySQL的Binary Log,感觉有些收获,记录一下. 二.Binary Log的概念 首先我们要了解一下什么是Binary Log(详情点进去看): Binary Log(二进制文件),包含了描述数据库更改的"事件",例如创建表的操作或者改变表的数据.如果采用基于行的日志,它还能包含已经发生更

记一次腾讯云MySQL数据库数据回滚

如题,因为操作人员的问题,需要对数据库数据进行回滚. 可以看到,设置了7天自动备份,且是物理冷备. 什么是物理冷备?科普一下: (1)热备:在数据库运行时,直接进行备份,对运行的数据库没有影响.(2)冷备:在数据库停止运行的时候进行备份,这种备份方式最为简单,只需要拷贝数据库物理文件即可.(3)温备:同样是在数据库运行的时候进行备份的,但对当前数据库的操作会产生影响. 热备份的缺点: 1.尽量不要出错,否则后果会很严重. 2.如果热备份不成功,所得结果不可用于时间点的数据恢复. 3.维护的工作比

oracle commit之后的数据回滚

当你晕晕乎乎的执行了commit之后,突然间意思到自己点错了,那说明你和我碰到了一样的问题. 瞬间感觉大冷天头顶冒汗,那就说明你的感觉对了.废话少说,下面是我的办法: 下面的例子都是以Test表为例. select t.*,t.rowid from Test t;-----执行了一堆命令commit;意识到自己点错了. 开始恢复了select * from Test as of timestamp to_timestamp('2016-12-29 15:04:56','yyyy-mm-dd hh

conn.setAutoCommit(false)数据回滚设置

前言:介绍一点爱混淆的概念. 1.mysql中默认 autocommit=1:事物自动提交. 可通过 select @@autocommit;查看 但是是设置事务自动提交模式为set autocommit = 0, 也就是不自动提交.自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务. 2.start transaction 是声明开始一个事务.然后执行sql语句,最后执行commit. 再来说今天的重点,其实也很简单. JDBC中的这个参数:co

MySQL通过binlog日志回滚数据

一.数据库在进行数据更改操作时,会出现数据误操作导致数据异常的情况,所以数据安全是重中至重,对于数据库服务,必须开启binlog日志服务,保证数据的安全,可逆回滚.二进制日志的格式有三种形式分别为ROW.Statement以及MiXED1.STATMENT模式:基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中. 优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁

Spring 实现部分事务回滚

例如有业务需求,在catch异常后,catch块内把异常的信息存入到数据库,而catch外的数据全部回滚 try { ....... aaaService.save(); }catch(RuntimeException e) { bbbService.save(e.getMessage()); throw new RuntimeException(e.getMessage()); } 确保aaaService.save()的数据回滚,而 bbbService的save不回滚. 只能在bbbSer

mysql数据库回滚

在应用$mysqli时,因没常用到数据回滚,老忘,整理下,做个记录. $mysqli->autocommit(FALSE);//自动提交设置关闭 $mysqli->query("BEGIN"); //事务开始,接着下面的执行才可以我们自己控制 try{  $mysqli->query($sql);  $q1 = $mysqli->affected_rows;  if($q == 1){ //从返回的数据库影响行数做判断,是否返回正常   $mysqli->

MyBatis:事务回滚

事务的隔离级别:DEFAULT.READ_UNCOMMITED.READ_COMMITTED.REPEATABLE_READ.SERIALIZABLE 事务的传播行为:REQUIRED.SUPPORTS.MANDATORY.REQUIRES_NEW.NOT_SUPPORTED.NEVER.NESTED 我们这里举一个小例子说明下,在一个service方法中执行两个sql操作,中间存在数据计算异常,此时我们一定希望数据回滚,那么我们就需要在方法前标注REQUIRED 如上所示,我们来测试下 运行后