资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
.net事务 在一个MIS系统中,没有用事务那就绝对是有问题的,要么就只有一种情况:你的系统实在是太小了,业务业务 逻辑有只要一步执行就可以完成了。因此掌握事务处理的方法是很重要,进我的归类在.net中大致有以下4种事务处理的方法。大家可以参考一下,根据实际选 择适当的事务处理。1 SQL事务 sql事务是使用SQL server自身的事务:在存储过程中直接使用Begin Tran,Rollback Tran,Commit Tran实现事务:优点:执行效率最佳限制:事务上下文仅在数据库中调用,难以实现复杂的业务逻辑。Demo:(所有demo,都以SQL Server自带的Northwind数据的表Region为例)CREATEPROCEDUREdbo.SPTransaction(UpdateIDint,UpdateValuenchar(50),InsertIDint,InsertValuenchar(50)ASbeginTranUpdateRegionSetRegionDescription=UpdateValuewhereRegionID=UpdateIDinsertintoRegionValues(InsertID,InsertValue)declareRegionErrorintselectRegionError=errorif(RegionError=0)COMMITTranelseROLLBACKTranGO/SQL事务:/publicvoidSQLTran()SqlConnectionconn=newSqlConnection(DataSource=127.0.0.1;InitialCatalog=Northwind;PersistSecurityInfo=True;UserID=sa;Password=123;);SqlCommandcmd=newSqlCommand();cmd.CommandText=SPTransaction;cmd.CommandType=CommandType.StoredProcedure;cmd.Connection=conn;conn.Open();SqlParameterparas=newSqlParameternewSqlParameter(UpdateID,SqlDbType.Int,32),newSqlParameter(UpdateValue,SqlDbType.NChar,50),newSqlParameter(InsertID,SqlDbType.Int,32),newSqlParameter(InsertValue,SqlDbType.NChar,50);paras0.Value=2;paras1.Value=UpdateValue1;paras2.Value=6;paras3.Value=InsertValue1;foreach(SqlParameterparainparas)cmd.Parameters.Add(para);cmd.ExecuteNonQuery();2 ADO.net事务 Ado.net事务可能是大家一般都用的优点:简单,效率和数据库事务差不多。缺点:事务不能跨数据库,只能在一个数据库连接上。如果是两个数据库上就不能使用该事务了。Demo:/一般的ADO.net事务/publicvoidADONetTran1()SqlConnectionconn=newSqlConnection(DataSource=127.0.0.1;InitialCatalog=Northwind;PersistSecurityInfo=True;UserID=sa;Password=123;);SqlCommandcmd=newSqlCommand();trycmd.CommandText=UpdateRegionSetRegionDescription=UpdateValuewhereRegionID=UpdateID;cmd.CommandType=CommandType.Text;cmd.Connection=conn;conn.Open();SqlParameterparas=newSqlParameternewSqlParameter(UpdateID,SqlDbType.Int,32),newSqlParameter(UpdateValue,SqlDbType.NChar,50);paras0.Value=2;paras1.Value=UpdateValue12;foreach(SqlParameterparainparas)cmd.Parameters.Add(para);/开始事务cmd.Transaction=conn.BeginTransaction();cmd.ExecuteNonQuery();cmd.CommandText=insertintoRegionvalues(InsertID,InsertValue);cmd.CommandType=CommandType.Text;paras=newSqlParameternewSqlParameter(InsertID,SqlDbType.Int,32),newSqlParameter(InsertValue,SqlDbType.NChar,50);paras0.Value=7;paras1.Value=InsertValue;cmd.Parameters.Clear();foreach(SqlParameterparainparas)cmd.Parameters.Add(para);cmd.ExecuteNonQuery();/提交事务cmd.Transaction.Commit();catch/回滚事务cmd.Transaction.Rollback();throw;finallyconn.Close();3 TransactionScope事务 TransactionScope事务类,它可以使代码块成为事务性代码。并自动提升为分布式事务优点:实现简单,同时能够自动提升为分布式事务Demo:/TransactionScope事务:可自动提升事务为完全分布式事务的轻型(本地)事务。/使用时要保证MSDTC服务(控制分布事务)是开启的可以使用:netstartmsdtc命令开启服务;/publicvoidADONetTran2()SqlConnectionconn=newSqlConnection(DataSource=127.0.0.1;InitialCatalog=Northwind;PersistSecurityInfo=True;UserID=sa;Password=123;);SqlCommandcmd=newSqlCommand();tryusing(System.Transactions.TransactionScopets=newTransactionScope()cmd.CommandText=Upda
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号