.net事务 .doc

上传人:小** 文档编号:89300455 上传时间:2019-05-23 格式:DOC 页数:8 大小:306.50KB
返回 下载 相关 举报
.net事务 .doc_第1页
第1页 / 共8页
.net事务 .doc_第2页
第2页 / 共8页
.net事务 .doc_第3页
第3页 / 共8页
.net事务 .doc_第4页
第4页 / 共8页
.net事务 .doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《.net事务 .doc》由会员分享,可在线阅读,更多相关《.net事务 .doc(8页珍藏版)》请在金锄头文库上搜索。

1、.net事务 在一个MIS系统中,没有用事务那就绝对是有问题的,要么就只有一种情况:你的系统实在是太小了,业务业务 逻辑有只要一步执行就可以完成了。因此掌握事务处理的方法是很重要,进我的归类在.net中大致有以下4种事务处理的方法。大家可以参考一下,根据实际选 择适当的事务处理。1 SQL事务 sql事务是使用SQL server自身的事务:在存储过程中直接使用Begin Tran,Rollback Tran,Commit Tran实现事务:优点:执行效率最佳限制:事务上下文仅在数据库中调用,难以实现复杂的业务逻辑。Demo:(所有demo,都以SQL Server自带的Northwind数据

2、的表Region为例)CREATEPROCEDUREdbo.SPTransaction(UpdateIDint,UpdateValuenchar(50),InsertIDint,InsertValuenchar(50)ASbeginTranUpdateRegionSetRegionDescription=UpdateValuewhereRegionID=UpdateIDinsertintoRegionValues(InsertID,InsertValue)declareRegionErrorintselectRegionError=errorif(RegionError=0)COMMITTra

3、nelseROLLBACKTranGO/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

4、;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=Ins

5、ertValue1;foreach(SqlParameterparainparas)cmd.Parameters.Add(para);cmd.ExecuteNonQuery();2 ADO.net事务 A事务可能是大家一般都用的优点:简单,效率和数据库事务差不多。缺点:事务不能跨数据库,只能在一个数据库连接上。如果是两个数据库上就不能使用该事务了。Demo:/一般的ADO.net事务/publicvoidADONetTran1()SqlConnectionconn=newSqlConnection(DataSource=127.0.0.1;InitialCatalog=Northwind;Pe

6、rsistSecurityInfo=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

7、,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=Comm

8、andType.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();cat

9、ch/回滚事务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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号