【发布时间】:2019-03-07 10:11:59
【问题描述】:
大家好,晚上好,我有一个问题.. 我怎样才能防止重复插入数据到我的数据库。我的逻辑是他早上进来,日期是 2019 年 3 月 7 日 他插入,当他在 2019 年 3 月 7 日再次尝试加入时,消息框将显示(“他已经加入”),当他在 2019 年 3 月 8 日时,简而言之,如果他现在可以加入,他可以再次加入又是一天,我该如何解决这个问题,我这里有一些代码
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();
}
因为连接打开而出错...我可以采取什么策略?
【问题讨论】:
-
删除第二个
con.Open(),并为最佳实践在您的连接周围使用using ( )。然后你应该能够执行你的两个命令。问题是您遇到 SQL 问题还是您的查询不起作用? -
@NibblyPig 我这样做了,但错误仍然是连接打开