在机房重构过程当中,需要有员工上下机记录的问题,就需要在上机记录表中进行数据的操作,一开始是要写入一条上机的记录,但是下机的时间是空的,状态为正在上机,但是如果你下机的话就需要把这条记录给补全,就需要写入下机时间,还有状态改为下机,
当时的问题是如何判断这个上机记录表中的数据是你要找的,可以看到在这个记录中有很多条数据,都是同一个账号的记录。
如果只是通过卡号来判断的话,那么你写入下机时间时其他上机时间对应的下机时间也会被修改,当时自己就是这么来的,就看着数据库入了神,后来经过修改把这个问题解决了,当时的解决办法是通过去数据库拿出你对应卡号的这个记录的上机时间,然后把这个时间和你的卡号作为判断条件,这样只会找到一条数据,修改的也正是这个条数据了,
public List<dynamic> logoutwork(string cardID)
{
string sql = "select * from T_WorkLog where CardID=@cardID and Status=@Status";
SqlParameter[] sqlParameter = { new SqlParameter("@cardID", cardID), new SqlParameter("@Status", "正在上机") };
DataTable data = SQLHelper.GetDataTable(sql, sqlParameter);
List<dynamic> list = new List<dynamic>();
foreach (DataRow row in data.Rows)
{
list.Add(new InvariableEntity()
{
logintime = Convert.ToDateTime(row["LoginTime"])
});
}
return list;
}
这个代码就是D层worklog表的获取上机时间的代码,通过参数的传递,把卡号传进来,然后通过卡号和上机状态去找那条数据,这就是一个比较繁琐的方法,还有一个更简单的办法就是,在写入下机时间的代码中判断就好,方法就是判断条件卡号和上机状态,就能找到那条数据,然后修改就好,我一开始的方法南辕北辙了,走了弯路。第二个方法更加简单,省去了去数据库拿上机时间这个步骤。