我如何防止出勤时出现重复的插入数据

时间:2019-03-07 10:11:59

标签: c# mysql database

大家好,大家好,我有一个问题..如何防止重复的插入数据到数据库。我的逻辑是他早上进屋,日期是2019年3月7日 他插入,当他尝试在2019年3月7日再次进入时,消息框将显示(“他已经进入”),并且当他在2019年3月8日时,如果现在进入,他可以再次简称为In,现在他可以进入另一个再次,我该如何解决这个问题?我在这里有一些代码

 MySqlDataReader dr;
        if (con != null && con.State == ConnectionState.Closed)
        {
            con.Open();
        }
        MySqlCommand cmd = new MySqlCommand("Select * from attendance1 where empID=@empID AND Name=@Name AND Date=@Date", con);
        cmd.Parameters.Add("@empID", MySqlDbType.VarChar).Value = empID.ToString();
        cmd.Parameters.Add("@Name", MySqlDbType.VarChar).Value = label6.Text;
        cmd.Parameters.Add("@Date", MySqlDbType.Date).Value = Convert.ToDateTime(label4.Text);

        dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            MessageBox.Show("You are already In");

        }
        else
        {

            MySqlCommand cmd1 = new MySqlCommand("INSERT INTO attendance1(empID,Name,Date,MorningIn)values(@empID,@Name,@Date,@MorningIn)", con);
            cmd1.Parameters.Add("@empID", MySqlDbType.VarChar).Value = empID.ToString();
            cmd1.Parameters.Add("@Name", MySqlDbType.VarChar).Value = label6.Text;
            cmd1.Parameters.Add("@Date", MySqlDbType.Date).Value = Convert.ToDateTime(label4.Text);
            cmd1.Parameters.Add("@MorningIn", MySqlDbType.VarChar).Value = label2.Text;
            cmd1.ExecuteNonQuery();
            MessageBox.Show("OK");


        }
        if (con != null && con.State == ConnectionState.Open)
        {
            con.Close();
        }

由于连接断开而出错...我该怎么办?

1 个答案:

答案 0 :(得分:0)

您在这里打开了两次连接

1)删除所有con.Open(); and con.Close()

2)在MySqlDataReader dr之后添加;

if (con != null && con.State == ConnectionState.Closed)
{
   con.open();
}

3)最后在最后一个命令行中写

 if (con != null && con.State == ConnectionState.Open)
{
   con.close();
}