C# C语言中的sqldelete语句#
我只是请求帮助。。它不会删除该行。但是我没有遇到任何错误。。请帮帮我,我的代码是:C# C语言中的sqldelete语句#,c#,C#,我只是请求帮助。。它不会删除该行。但是我没有遇到任何错误。。请帮帮我,我的代码是: private void btndelete_Click(object sender, EventArgs e) { if (txtprn.Text == "" || txtdescription.Text == "") { MessageBox.Show("No selected file to be delete!",
private void btndelete_Click(object sender, EventArgs e)
{
if (txtprn.Text == "" || txtdescription.Text == "")
{
MessageBox.Show("No selected file to be delete!",
"Delete Data",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning);
}
else
{
DialogResult answer;
answer = MessageBox.Show("Are you sure you want to delete this record?",
"Delete Record",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2);
if (answer == DialogResult.Yes)
{
con.Open();
com.CommandText =
@"DELETE
FROM tblsupply
WHERE (prnumber = @prnumber AND
description = @description)";
com.Parameters.Clear();
com.Parameters.AddWithValue("@prnumber", txtprn.Text);
com.Parameters.AddWithValue("@description", txtdescription.Text);
com.ExecuteNonQuery();
MessageBox.Show("Record Deleted!");
con.Close();
}
ClearFields();
GridRefresh();
}
}
放置此尝试捕捉,以便您知道错误
try
{
DialogResult answer;
answer = MessageBox.Show("Are you sure you want to delete this record?", "Delete Record", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
if (answer == DialogResult.Yes)
{
con.Open();
com.CommandText = "DELETE FROM tblsupply WHERE (prnumber=@prnumber AND description=@description)";
com.Parameters.Clear();
com.Parameters.AddWithValue("@prnumber", txtprn.Text);
com.Parameters.AddWithValue("@description", txtdescription.Text);
com.ExecuteNonQuery();
MessageBox.Show("Record Deleted!");
con.Close();
}
ClearFields();
GridRefresh();
}
catch(Exception ex)
{
ex.Message.ToString();
}
检查输出值。如果返回正数,则表示已成功删除多条记录。如果得到-1,则会发生回滚,返回值也是-1 将txtprn转换为int,因为它看起来像一个数字,并且作为字符串传递
com.Parameters.AddWithValue("@prnumber", Convert.ToInt32(txtprn.Text));
com.Parameters.AddWithValue("@description", txtdescription.Text);
var numberOfRowsAffected = com.ExecuteNonQuery();
MessageBox.Show("Record Deleted!"+numberOfRowsAffected );
我建议不要根据用户输入删除记录。在您的情况下,您应该有一个用户无法编辑的标识符,甚至您的应用程序在幕后管理的更隐藏的值。 情景:
在当前状态下,请注意,如果是空格,则删除可能无法成功,因此您无法依赖这些文本进行删除。引发任何异常?请检查输出值。如果它返回一个正数,那么许多记录将被删除。如果得到-1,则在sql server上发生回滚<代码>变量输出=com.ExecuteNonQuery()ExecuteNonQuery调用的返回值是多少。它应该是受影响的行数(在本例中已删除)如果您一步一步地运行代码,它是否正在执行sql命令?您在哪里声明和实例化con和com对象?我们可以看看那个密码吗?您是否检查了运行时生成的CommandText,并尝试直接在SQL Server中执行该命令?请小心使用AddWithValue。您现在将
@prnumber
参数声明为某种字符类型-这就是您需要的吗?他说没有错误,所以我假设它不会捕获任何内容。这不是答案。是的,将执行查询,但在转换过程中,查询背后有一个错误。。所以这个答案可能只是一个建议,可能会帮助他解决这个问题,但我理解反对票。