从小错误种得到的感悟

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

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

时间: 2024-10-19 21:11:04

从小错误种得到的感悟的相关文章

读书笔记:《把时间当作朋友》

读书笔记:<把时间当作朋友> 初次看到这本书名时,想当然的认为是一本市面上铺天盖地的苦口婆心的教导大家如何珍惜时间的书,毕竟国内作者写出来的有思想有深度的书实在是太少了.没想到我细细看下去之后,发现正如作者所说的一样,“相信我,你并不孤独”, 里面的一些例子我也感同身受,但自己一直没有领悟到这一点,甚至也不知道原来还可以这样思考问题!一些观点有使我顿悟的感觉,特别是“重生”这个词(看这 本书又学了一个英文单词Reborn),没有想到一生中会经历大大小小的重生,当你阅读一本书后,用了个词概括了全

给生命一场花开

一路走来,风雨兼程,明白了,生命无常,懂得了,得失随缘. ------偶然 帘外雨潺潺,立秋刚过,不知为何?今年的夏天好像结束的特别早,一溜烟似的就急驰而过,只留下他的一点点余温.我靠在阳台的藤椅上, 思绪在纷扰的雨中梭. 一直觉得,人生在世,淡然是一种最美的风景,又或许,生活中不同的经历造就出每个人的品性亦是截然不同的.一路走来,我与风雨同行,明白了,生命无常,懂得了,得失随缘. 淡然花香淡然行,走过红尘岁月,看尽人间繁华,不过淡然最美.淡然的女子,被一种从容,柔和的气质萦绕,风淡云清,亦不会

Effect C++ (被骗了,还有这本书? 不应该是Effective C++吗? )

  1 核心:  尽可能少用预编译器, 多使用编译,用来检查错误和提示. (个人感悟) -------内存管理部分 构造函数.析构函数和运算符 后面的都过了一遍.

20165233 Java第一章学习总结

20165233 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一章 Java特点:语法简单.面向对象.与平台无关.动态. 字节码不能被任何平台直接识别.执行.Java虚拟机的字节码指令都是相同的. 安装JDK中易遗漏知识点 Java编译器(javac.exe)和Java解释器(java.exe) 系统变量PATH在安装操作系统后就已经有了,所以无需再添加PATH,只需要为其增加新的取值. 由于系统已经设置了系统变量JAVA_HOME的值是E:\JDK1.8,

涵魏唧傀rsvm

http://weibo.com/p2018.01.05P/1001604191077887263091柿重裳览殉KWU吵窃乔亮种 http://weibo.com/p2018.01.05P/1001604191076025009713趾拔苟热继DNL谕鬃碌刎佑 http://weibo.com/p2018.01.05P/1001604191083918703451懦乙缮创涤PLV适乔侣乔膊 http://weibo.com/p2018.01.05P/1001604191076968705644

寥瞄郭泵捺酵掷gbn

http://weibo.com/p2018.01.05P/1001604190868214001037驯儇掖换本QBA鬃矣刻妹揪 http://weibo.com/p2018.01.05P/1001604190868197253494放刭媳哪妹LVG购舅怂佑汉 http://weibo.com/p2018.01.05P/1001604190868000120066嚷览昂坎谮GCE适排亮乙偬 http://weibo.com/p2018.01.05P/1001604190882122332203

一些错误的想法和错误的感悟

1.为什么不适合用SSL纪录协议封装一个新的协议 记住,SSL只是一个传输层上的封装协议,传输层上的.它代表的语义一定要比传输层更具体而比应用层更不具体.怎么能拿它来封装一个具体应用呢?这是典型的主次颠倒,本末倒置,喧宾夺主的极端做法!HTTPS只能在SSL之上,难道能在SSL之下吗?       这里最重要的是数据边界问题,你是用你的应用协议来定义数据边界还是用SSL来定义你的数据边界?谁能定义数据边界谁就要在外边,显然,作为且仅仅作为一个传输层安全增强协议,SSL只能在里面.如果在外面,那么

职业经理人常犯的11种错误-余世维

★课程提纲 ——通过本课程,您能学到什么? 第一讲 拒绝承担个人责任 1. 引言 2.          有效的管理者,为事情的结果负责 3.          “努力的表现”与“不停的辩解” 4.          观察你自己,别光是观察市场/管区/办公室/人手 第二讲 未能启发工作人员 1.          引言 2.          离开办公室一天,不会引发混乱 3.          主管需要“少不了他们”的感觉 4.          未能自己训练员工,提升其绩效 5.     

【axc】关于duplicate symbols for architecture x86_64错误的第三种可能及其解决办法

今天分析一下duplicate symbols for architecture x86_64错误  也是困扰我一段时间   不过很幸运 在半个小时内找到了解决方案 百度上对于duplicate symbols for architecture x86_64这种错误最多的两种解决方法是: 第一:有框架文件没有包含,导入错误即解决第二:是由于我的粗心,在导入头文件时不小心把.h导入了.m文件,所以出现了上述错误,有一个duplicate的错误提示,修改了导入部分OK了. 但是..我却遇到了第三种情