• 从小错误种得到的感悟


    今天刘总在检查我写的程序时,发现我犯了一个很低级的错误。今天写出来,告诫自己以后不要再犯同样的错误。。。

    在添加班次的时候,遇到这种锁死的情况。在添加班次的时候,我没有仔细看DAL里的代码。只是片面的看了添加那个方法,以至于犯了一个非常低级的错误。为了防止错误。

    可以采取一下两种方案:

    1、先别死锁,选择看看可以正确添加后再死锁。

    2、添加后直接查询数据库里的数据。添加或编辑的时候,一定要去库里查查。这是最直接也是最有效的方法。

    谨记以后不得再犯同样的错误。。。。。

    #region 初始化参数
      /// <summary>
      /// 初始化参数
      /// </summary>
      /// <returns>System.Collections.ArrayList</returns>
      private ArrayList InitlizeParames(ClassInfo ci, DataOperationType type)
      {
       ArrayList parames = new ArrayList();

       // 删除
       if(type == DataOperationType.DEL)
       {
        ExIDbDataParameter parame1 = new ExIDbDataParameter("COLUMN1" ,DbType.Int64, ci.Id);
        parames.Add(parame1);
        return parames;
       }
       // 修改
       if(type == DataOperationType.UPDATE)
       {
        ExIDbDataParameter parame1 = new ExIDbDataParameter("COLUMN1" ,DbType.Int64, ci.Id);
        parames.Add(parame1);
       
       }
       // 修改、添加
          parames.Add(parame17);
       ExIDbDataParameter parame24 = new ExIDbDataParameter("COLUMN24", DbType.DateTime, ci.EditZzDate);
       parames.Add(parame24);
       ExIDbDataParameter parame25 = new ExIDbDataParameter("COLUMN25", DbType.DateTime, ci.EditZzEndDate);
       parames.Add(parame25);
       ExIDbDataParameter parame26 = new ExIDbDataParameter("COLUMN26", DbType.Int32, ci.ClassChuShi);//记录的是处室,当时有一个默认值。

       parames.Add(parame26);
       ExIDbDataParameter parame27 = new ExIDbDataParameter("COLUMN27", DbType.Int32, ci.ClassJXState);
       parames.Add(parame31);
       parames.Add(parame38);

       return parames;
      }
      #endregion  初始化参数

      #region 添加班级

      /// <summary>
      /// 添加班级信息,返回ID
      /// </summary>
      /// <param name="ci">JW.Module.ClassInfo对象</param>
      /// <returns>成功返回ID, 失败返回0</returns>
      public int AddClassInfo(ClassInfo ci)
      {
       int id = 0;
       string strSql = "INSERT INTO Table2("
                  + "COLUMN2,COLUMN3,COLUMN4,COLUMN5,COLUMN6,COLUMN7,COLUMN8,COLUMN9,COLUMN10,COLUMN11,COLUMN12,COLUMN13,COLUMN14,COLUMN15,COLUMN16,COLUMN17,COLUMN18,"
                  + "COLUMN19,COLUMN20,COLUMN21,COLUMN22,COLUMN23,COLUMN24,COLUMN25,COLUMN26,COLUMN27,COLUMN28,COLUMN29,COLUMN30,COLUMN31,COLUMN32,COLUMN33,COLUMN34,"
            + "COLUMN35,COLUMN36,COLUMN37,COLUMN38)"
                  + " VALUES ("
            + "@COLUMN2,@COLUMN3,@COLUMN4,@COLUMN5,@COLUMN6,@COLUMN7,@COLUMN8,@COLUMN9,@COLUMN10,@COLUMN11,@COLUMN12,@COLUMN13,@COLUMN14,@COLUMN15,@COLUMN16,"
                  + "@COLUMN17,@COLUMN18,@COLUMN19,@COLUMN20,@COLUMN21,@COLUMN22,@COLUMN23,@COLUMN24,@COLUMN25,@COLUMN26,@COLUMN27,@COLUMN28,@COLUMN29,@COLUMN30,"
                              + "@COLUMN31,@COLUMN32,@COLUMN33,@COLUMN34,@COLUMN35,@COLUMN36,@COLUMN37,@COLUMN38) select @@identity ";

       ArrayList parames = this.InitlizeParames(ci, DataOperationType.ADD);
       try
       {
        id = int.Parse(dataHelper.ExecuteScalar(strSql, CommandType.Text, parames).ToString());
       }
       catch
       {
        id = 0;
       }

       return id;
      }
      #endregion 添加班级

    感悟:

    1、写什么东西时一定要先思考怎么写,其中哪容易出错。

    2、看程序时一定要整体把握,不要只看你自己用到的方法。还要全面把控。

    3、这个错误虽然很小,但是却很低级。我不能小看这个错误,一定要以此为戒。一定不要再犯类似的错误!

    4、不要只做表面上可得见的东西,还有全面的去看你所该的这个模块还有什么地方需要该。

    5、时刻以用户的身份去体验,想着这个东西以后是你用。如果你做的好,用着才方便。

  • 相关阅读:
    如何把一个用户加入sodu组
    linux bond配置步骤,七种bond模式说明
    python 面向对象(进阶篇)
    lnmp搭建的常见错误
    Linux运维人员如何学习python编程
    运维日常工作知识总结
    《JS原型》
    《读王福朋有感》
    《使用Win32DiskImager安装Ubuntu16.04》
    因为无耻的查重系统,我删除了四篇随笔
  • 原文地址:https://www.cnblogs.com/honghong75042/p/2393926.html
Copyright © 2020-2023  润新知