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

在添加班次的时候,遇到这种锁死的情况。在添加班次的时候,我没有仔细看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、时刻以用户的身份去体验,想着这个东西以后是你用。如果你做的好,用着才方便。

posted on 2012-03-13 15:32  王洪洪  阅读(527)  评论(1编辑  收藏  举报