MVC出勤和离职系统

时间:2017-05-23 07:06:24

标签: c# ado.net

您好我在mvc上有考勤和离开系统使用Ado.Net我的连接名称是(DBConnection)我有两个方法一用于OnClick TimeIn和AND OTHER用于TimeOut,我的数据库名称LoginTime和我的表是出勤我有问题在onclick timein Btton检查我的考勤表中是否不存在行插入新行显示消息“你已经有时间”

public void Addtime(Attendance AddTim)
        {
            SqlCommand comm = new SqlCommand("select * from Attendance where UserID=@user", conn);
            comm.Parameters.AddWithValue("@user", AddTim.UserID);
            conn.Open();

            var rd = comm.ExecuteReader();
            bool sat = rd.Read();
            conn.Close();

            if (sat == true)
            {
                SqlCommand updCommand = new SqlCommand("UPDATE Attendance SET TimeIn=@timein WHERE UserID=@userid", conn);
                updCommand.Parameters.AddWithValue("@userid", AddTim.UserID);
                updCommand.Parameters.AddWithValue("@timein", DateTime.Now);
                conn.Open();
                int rowsUpdated = updCommand.ExecuteNonQuery();
                var rdr = comm.ExecuteReader();
                conn.Close();
            }
            else
            {
                SqlCommand insCommand = new SqlCommand("INSERT into Attendance (UserID,TimeIn) VALUES (@userid,@timein)", conn);
                insCommand.Parameters.AddWithValue("@userid", AddTim.UserID);
                insCommand.Parameters.AddWithValue("@timein", DateTime.Now);
                conn.Open();
                int rowsUpdated = insCommand.ExecuteNonQuery();
                var rdr = comm.ExecuteReader();                
                conn.Close();                
            }
        }
        public void Addtimout(Attendance addtimout)
        {

            SqlCommand UpDCommand = new SqlCommand("UPDATE Attendance SET TimeOut=@timeout WHERE UserID=@userid", conn);
            UpDCommand.Parameters.AddWithValue("@UserID", addtimout.UserID);
            UpDCommand.Parameters.AddWithValue("@timeout", DateTime.Now);


            conn.Open();
            UpDCommand.ExecuteNonQuery();
            conn.Close();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

那么我可以从你的问题中推断出更多内容,并且没有真正解释你所得到的错误(如果有的话)。如果是这样,请发布错误或意外行为,数据库架构也会有所帮助

我确实注意到你正在该块中执行多个insert或update语句,因为你正在执行每个查询两次;一次为NonQuery,另一次为Reader

int rowsUpdated = insCommand.ExecuteNonQuery();
var rdr = comm.ExecuteReader();     

要检查的原始查询对我来说并不好看。如果您只是想检查行数,可以使用SELECT Count(*),然后通过ExecuteScalar()执行。这将消除Reader的开销

public void Addtime(Attendance AddTim) {
    SqlCommand comm = new SqlCommand("select Count(*) from Attendance where UserID=@user", conn);
    comm.Parameters.AddWithValue("@user", AddTim.UserID);
    conn.Open();

    int uc = (int)comm.ExecuteScalar();
    bool sat = (uc > 0);

    conn.Close();