我有以下方法:
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以显示表中的其余记录。代码不会删除任何记录
答案 0 :(得分: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();
如果您希望更改立即反映在网格上,则需要再次选择数据并重新绑定网格。
答案 1 :(得分:-1)
问题是可能没有值'empID'的empID。
您没有将empID的值放在命令中,而是添加了一个精确的'empID'字符串,这在您的表中找不到。 将empID值作为Icarus建议的参数。