zoukankan      html  css  js  c++  java
  • 数据库操作的抽象类 荣

     编号 方法 描述 返回值 参数
    1 Add 实现添加功能。 void DT类
    2 AddPlus 实现带逻辑的添加功能。(例如:判断记录是否已经存在) void DT类
    3 Edit 实现编辑功能。 void DT类
    4 EditPlus 实现带逻辑的编辑功能。  void DT类
    5 Delete 实现删除功能。 void DT类
    6 Get 取得一条记录。 BaseDT DT类
    7 GetAllList 取得所有记录。 DataTable DT类
    8 GetAllListView 取得所有记录的视图数据。 DataTable DT类
    9 GetDataSource 取得单选框之类的数据源。 DataTable DT类
    10 IsExist 判断记录是否已经存在。(为添加) bool DT类
    11 IsExistForEdit 判断记录是否已经存在。(为编辑) bool DT类
    12 GetValue 取得一个值。  object DT类,字段名
    13 (事件)OperEvent 添加/编辑中的其他操作 void DT类
    14 GetList 取得数据列表(带条件) DataTable DT类
    15 (属性)ErrorText 错误信息 string
    16 ClearErrorText 清除错误信息 void
    17 (属性)IsError 判断是否有错误信息提出。 bool
    18 IsExist 判断符合某个条件的记录是否存在 bool

    sql对象

    19 (虚函数)GetBaseSQL 根据对象类型生成IBaseSQLable对象。 IBaseSQLable

    DT对象

    20 GetListSQL 取得带条件SQL语句 string
    21 ErrorType  常用的错误提示信息。 class
    22 (属性)IsUsingTrans  是否使用事务。 bool
    23 (事件)OperLastEvent 完成添加后的操作。 void DT对象
    24 (事件)OperEventTrans 添加/编辑中的其他操作 void DT对象,数据库操作对象
    25 (事件)OperLastEventTrans 完成添加后的操作。 void DT对象,数据库操作对象
    26 (属性)IsUsingExist 是否判断有相同的记录存在。(默认值:tru) bool



    AddPlus的流程:

    /// <summary>
      /// 实现带逻辑的添加功能。
      /// </summary>
      /// <param name="detail"></param>
      public void AddPlus(DT detail)
      {
       // 清除错误信息
       ClearErrorText();

       // 判断记录是否存在
       if (IIsUsingExist && IsExist(detail))
       {
        // 错误信息 ("Add_Exist")
        ErrorText = ErrorType.Add_Exist;
        return;
       }

       // 如果应用事务
       if (IsUsingTrans)
       {
        // 实现事务处理
        AddPlusStepTrans(detail);
       }
        // 如果不应用事务
       else
       {
        // 实现无事务处理
        AddPlusStep(detail);
       }
      }

      /// <summary>
      /// 无事务处理时的实现。
      /// </summary>
      /// <param name="detail"></param>
      private void AddPlusStep(DT detail)
      {
       // 清除错误信息
       ClearErrorText();

       if (OperEvent != null)
       {
        // 执行其他操作
        OperEvent(detail);

        // 如果出现错误
        if (IsError)
        {
         return;
        }
       }

       Add(detail);

       // 后续方法

       if (OperLastEvent != null)
       {
        OperLastEvent(detail);
       }
      }

      /// <summary>
      /// 事务处理时的实现。
      /// </summary>
      /// <param name="detail"></param>
      private void AddPlusStepTrans(DT detail)
      {
       // 清除错误信息
       ClearErrorText();

       bool selfTran = false;

       //事务处理
       if (curDBOperater.baseTransaction == null)
       {
        curDBOperater.BeginTran();
        selfTran = true;
       }

       try
       {

        if (OperEventTrans != null)
        {
         // 执行其他操作
         OperEventTrans(detail, curDBOperater);

         // 如果出现错误
         if (IsError)
         {
          // 回滚事务
          curDBOperater.RollBackTran();
          return;
         }
        }

        Add(detail);

        // 后续方法
        if (OperLastEventTrans != null)
        {
         OperLastEventTrans(detail, curDBOperater);

         // 如果出现错误
         if (IsError)
         {
          // 回滚事务
          curDBOperater.RollBackTran();
          return;
         }
        }

        // 提交事务
        if ( selfTran )
        {
         curDBOperater.CommitTran();
        }
       }
       catch(Exception ex)
       {
        // 回滚事务
        curDBOperater.RollBackTran();
        throw ex;
       }
       finally
       {
        if ( selfTran )
        {
         curDBOperater.baseTransaction.Dispose();
        }
       }
      }


    我忘记了几个地方:
    1:事务的应用。
    2:添加成功后的后续方法。

  • 相关阅读:
    Systemd 进程管理教程
    traefik的80和443端口占用进一步分析
    使用KubeOperator安装k8s集群后,节点主机yaml文件路径
    kubernetes1.20 部署 traefik2.3
    数据采集实战(二)-- 京粉商品
    机器人导航(仿真)(三)——路径规划(更新中)
    机器人导航(仿真)(二)——amcl定位
    Tkinter 做简单的窗口视窗 Python GUI
    机器人导航(仿真)(一)——SLAM建图
    (转载)VMware Workstation Ubuntu 20.04 无法连接网络问题
  • 原文地址:https://www.cnblogs.com/admin11/p/476369.html
Copyright © 2011-2022 走看看