今天刘总在检查我写的程序时,发现我犯了一个很低级的错误。今天写出来,告诫自己以后不要再犯同样的错误。。。
在添加班次的时候,遇到这种锁死的情况。在添加班次的时候,我没有仔细看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、时刻以用户的身份去体验,想着这个东西以后是你用。如果你做的好,用着才方便。