0

我有以下方法:

   Connection c =new Connection();
    SqlCommand cmd = new SqlCommand();
    String empID = toolStripTextBox1.Text;
    cmd.CommandText = "DELETE FROM tblEmployee WHERE employeeNumber='empID'";
    cmd.Connection = c.con;
    c.con.Open();
    dataGridView1.CurrentCell = null;
    int numberDeleted = cmd.ExecuteNonQuery();
    MessageBox.Show(numberDeleted.ToString() + " employees were deleted.<br>");
    c.con.Close();

我正在尝试删除表中的记录并更新 gridview 以显示表中的剩余记录。该代码不会删除任何记录

4

2 回答 2

4

这个:

DELETE FROM tblEmployee WHERE employeeNumber='empID'

应通过以下方式转换为使用参数化查询:

cmd.CommandText="DELETE FROM tblEmployee WHERE employeeNumber=@id";

原因是您之前的语句只是将delete from ...部分与'empid'我认为不是您想要的字符串连接起来。你追求的是这样的:

delete from ... where employeeNumber={some_number}参数some_number在哪里

为了将参数传递给您的 SQL 语句,您可以执行以下操作:

cmd.Parameters.AddWithValue("@id",empID);//I assume empID is a variable containing an ID
cmd.ExecuteNonQuery();

如果您希望更改立即反映在您的网格上,您需要再次选择数据并重新绑定您的网格。

于 2013-08-03T15:54:09.907 回答
-1

问题是可能不存在值为“empID”的empID。

您没有在命令中输入 empID 的值,而是添加了一个精确的“empID”字符串,在您的表中找不到该字符串。将 empID 值作为 Icarus 建议的参数。

于 2013-08-03T15:54:08.797 回答