zoukankan      html  css  js  c++  java
  • 数据库事务Commit()提交

    今天和朋友在讨论数据库的时候发现一个问题,数据库有四种隔离级别

    我在用事务更改一个表的时候,我更改了值但不Commit(),这是别的C#语句是不能操作这个数据库表的,但是可以用SQL语句在来查看这个表的变化,结果表明在用事务是,在Commit()之前,表里面的数据已经更新,但是如果在不执行Commit()语句就关闭或停止调试的话,表里面改变的值就会回滚到原来的值,举个例子说明:

    StuName   StuAge

    aa           11


    //读取数据很简单了,就不写了
    .....
    //更改数据

    private void UpdateNoCommit_Click(object sender, EventArgs e)
    {

    SqlConnection con
    = new SqlConnection("Data Source=.;Initial Catalog=Test;Integrated Security=True");
    con.Open();
    SqlCommand cmd
    = new SqlCommand("update Student set StuName='改变' where ID=406333", con);
    //tran为一个全局变量
    tran = con.BeginTransaction();
    cmd.Transaction
    = tran;
    //此时只是执行了语句,并没有把这个事务提交上去
    cmd.ExecuteNonQuery()
    }

    在单击UpdateNoCommit按钮之后,到 数据库里查询一个这个表会发现StuName的值已经改变

    private void RollBack_Click(object sender, EventArgs e)
    {
    tran.RollBack();
    }

    在执行这个操作以后,StuName的值就会变为aa

    当然如果执行tran.Commit()操作 的话,这个值是会提交到数据库的

  • 相关阅读:
    2021.10 好运气
    2021.9 抢购
    2021.8 全周期工程师
    2021.7 创业者
    2021.6 过年
    jenkins学习17
    httprunner 3.x学习18
    httprunner 3.x学习17
    python笔记57-@property源码解读与使用
    httprunner 3.x学习16
  • 原文地址:https://www.cnblogs.com/wangshuai/p/1635695.html
Copyright © 2011-2022 走看看