zoukankan      html  css  js  c++  java
  • ●事务及异常处理

    事务的四大特性:(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

             {

             }

  • 相关阅读:
    利用Apache AXIS 1 发布WebService
    WebService(基于AXIS的WebService编程)
    转载 使用axis2构建webservice
    svn强制解锁的几种做法
    批处理切换当前目录的做法
    Android源码分析-点击事件派发机制
    Eclipse使用技巧总结(六)
    Eclipse使用技巧总结(五)
    Eclipse使用技巧总结(四)——代码重构专题
    Eclipse使用技巧总结(三)
  • 原文地址:https://www.cnblogs.com/phantom-k/p/4080336.html
Copyright © 2011-2022 走看看