数据库事务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()操作 的话,这个值是会提交到数据库的

转载于:https://www.cnblogs.com/wangshuai/archive/2009/12/30/1635695.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值