每当我将记录插入数据库时,记录将被添加3次。
try
{
con.Open();
object addedkey = cmd.ExecuteScalar();
if ((addedkey != null && (addedkey != DBNull.Value)))
{
addedkey = Convert.ToInt32(cmd.ExecuteScalar());
}
added = cmd.ExecuteNonQuery();
lblResult.Text = added.ToString() + " record opgeslagen.";
lblResult.Text = addedkey.ToString();
}
但是当我评论ExecuteScalar
和ExecuteNonQuery
时,一切正常。因此,如果我注释掉其中一个,那么记录将被插入两次。
这是在我添加了一个删除按钮后开始发生的,该按钮与insert命令无关。
有谁知道造成这种情况的原因是什么?
提前致谢。 :)
答案 0 :(得分:4)
每次在命令上运行'Execute ...()'方法时,您都在执行插入操作。您在代码中运行它三次,因此您插入3x记录。
object addedkey = cmd.ExecuteScalar(); //you run the insert command here
if ((addedkey != null && (addedkey != DBNull.Value)))
{
addedkey = Convert.ToInt32(cmd.ExecuteScalar());//you run the insert command here
}
added = cmd.ExecuteNonQuery();//you run the insert command here
lblResult.Text = added.ToString() + " record opgeslagen.";
lblResult.Text = addedkey.ToString();
答案 1 :(得分:0)
你执行了3次。实际上,您需要在第一次执行后重构代码。
您可以更改
addedkey = Convert.ToInt32(cmd.ExecuteScalar());
到此 - 这将阻止第二次执行:
addedkey = Convert.ToInt32(addedKey);
并改变这一点:
added = cmd.ExecuteNonQuery();
到此 - 这将阻止第三次执行(假设added
是一个int,并且是执行的返回。
added = addedKey;
如果added
实际上是boolean
,请将其设置在if
内,因为它会通过您的if
声明进行验证
即
{
addedkey = Convert.ToInt32(addedKey);//you run the insert command here
added = true;
}