码迷,mamicode.com
首页 > 其他好文 > 详细

141107●事务及异常处理

时间:2014-11-07 06:11:42      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   io   os   sp   文件   数据   on   cti   代码   

 

事务的四大特性:(A——原子性,C——一致性,I——隔离性,D——持久性)

 

两大类事务:

一、连接内事务

连接打开,在关闭之前,对数据库操作时所加的事务。

         1).导入dll文件(添加System.Transactions引用)

         2).添加命名空间:using System.Transactions;

1.事务对象的创建:

         conn.Open();

         SqlTransaction trans = conn.BeginTransaction();

 

2.把事务挂到命令对象上去

         cmd.Transaction = trans;

 

3.执行命令对象.

         cmd.CommandText="";

         cmd.ExecuteNoneQuery();

         .....

 

4.提交事务

         trans.Commit();

 

5.回滚事务:放在catch里面

         trans.Rollback();

 

                   try

                   {

                            conn.Open();

 

                            cmd.CommandText = "delete from work where infocode=@code";

                            cmd.ExecuteNonQuery();

 

                            cmd.CommandText = "delete from family where infocode=@code";

                            cmd.ExecuteNonQuery();

 

                            cmd.CommandText = "delete from info where code = @code";

                            cmd.ExecuteNonQuery();

 

                            trans.Commit();    //事务提交

                   }

                   catch (Exception ex)

                   {

                            trans.Rollback();    //事务回滚

                            throw ex;    //ex.StackTrace,显示更详细的错误信息

                   }

                   finally

                   {

                            conn.Close();

                   }

 

 

 

 

 

二、分布式事务

在连接打开关闭之外设置事务。可以控制所有操作。

1.启用DTC服务

2.导入dll文件(添加System.Transactions引用)

3.添加命名空间:using System.Transactions;

4.编写代码。

 

TransactionScope类

 

         using(TransactionScope ts = new TransactionScope())

         {

                   数据库操作。

 

                   ts.Complete();

         }

 

         using(TransactionScope ts = new TransactionScope())

         {

                   new WorkTableAdapter().DeleteByInfoCode(s);

                   throw new Exception("自定义的异常");

                   new FamilyTableAdapter().DeleteByInfoCode(s);

                   new InfoTableAdapter().DeleteInfo(s);

                   ts.Complete();

         }

 

 

异常处理:try...[catch...][finally..]

         异常,与正常情况有差异,不一定是错误。

 

         try

         {

                   可能会出现异常的代码;

         }

         [catch[(异常类型 异常对象)]

         {

                   一旦出现异常,将会进入此处,对错误信息进行处理;

         }]

         [finally    //不论程序是否运行正常,最后一定执行,常用来关闭链接通道。

         {

         }]

 

 

一、捕获异常

         不加try..catch...一旦程序执出错,程序会立马终止。如果加上try...catch...,代表程序中已经把异常给处理了,程序只是终止try部份的运行,转入catch,整个程序不终止运行。

 

         1、try部份:执行的部份,一旦出错就会终止try部份的执行,走catch。程序不会终止。

         2、catch部份:异常处理,一旦出错就会走catch,在catch部份进行处理(写日志,界面显示,异常的包装替换)

如果catch(Exception ex)。常用ex.Message获取错误信息。

一个try可以跟多个catch,每个catch获得不同类型的异常对象。

 

         3、finally部份:最终收尾部份,不管程序执行是否出错,总会执行finally,即使在try部份遇到return,break等关键词时,仍然会执行finally

 

二、抛出异常

(一)造异常对象:

Exception ex = new Exception("异常的错误信息");

throw ex;

 

(二)派生自己的异常:(少)

         class MyException:Exception

         {

         }

 

141107●事务及异常处理

标签:style   io   os   sp   文件   数据   on   cti   代码   

原文地址:http://www.cnblogs.com/phantom-k/p/4080336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!