事务处理基本原理
事务是将一系列操作作为一个单元执行,要么同时成功,要么同时失败,回滚到最初状态。在事务处理术语中,事务要么提交,要么中止。若要提交事务,所有参与者都必须保证对数据的任何更改是永久的。不论系统崩溃或是发生其他无法预料的事件,更改都必须是持久的。只要有一个参与者无法做出此保证,整个事务就会失败。事务范围内的所有数据更改将回滚到特定设置点。
一般的操作是不会使用到事务操作的, 因为事务操作中造成表处于锁定状态,在一定的程度上造成效率低下,不过有些时候不得不使用事务, 例如本例中,需要在改变维修单状态的同时,插入付款的单据,这些操作必须是同时成功或者同时失败。所以必须使用事务。
下面就是事务的基本使用方法: ///
///事务处理
///
///数据库连接字符串
publicvoidSqlTransaction(stringconn)
{
//创建连接对象
using(SqlConnectionmySqlConnection=newSqlConnection(conn))
{
//打开连接
mySqlConnection.Open();
//创建SqlTransaction对象并用SqlConnection对象
//BeginTransaction()方法开始事务
SqlTransactionmySqlTransaction=mySqlConnection.BeginTransaction();
try
{
//创建保存SQL语句
SqlCommandmySqlCommand=mySqlConnection.CreateCommand();
//将Transaction属性设置为上面所生成的SqlTransaction对象
mySqlCommand.Transaction=mySqlTransaction;
//将SqlCommand对象的CommandText属性设置为第一个INSERT语句,
//执行语句A
mandText="UPDATEdbo.use_requestPayOutSETstate='2'WHERErequestPayOut_no=@requestPayOut_no";
mySqlCommand.Parameters.AddRange(newSqlParameter[]{
newSqlParameter("@requestPayOut_no","")
});
mySqlCommand.ExecuteNonQuery();
//执行语句B
mandText=string.Format("updateUse_RepairBillsetopen_state='9',IsRefusal=''whererequest_noin({0})","");
mySqlCommand.ExecuteNonQuery();
//提交事务,使INSERT语句增加的两行在数据库中保存起来
mit();
}
catch(Exception)
{
//失败,事务回滚
mySqlTransaction.Rollback();
}
}
}
Tags:
C#
转载:感谢您对白码驿站个人博客网站平台的认可,以及对我们原创作品和文章的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源白码驿站”。/Home/Detail/4528