如何从表中删除单个条目

时间:2015-08-05 11:09:51

标签: c#

我有一个带有用户名的列表框,还有一个删除按钮我希望在单击删除按钮时删除所选用户(所有输入的数据与该用户相关联)。

我的代码

SqlConnection con = new SqlConnection("Data Source=JAMES-PC\\SQLEXPRESS;Initial Catalog=staff;Integrated Security=True");
con.Open();

string sql = @"DELETE FROM staff1;";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
con.Close();

此代码删除整个表。

如何删除所选用户?

3 个答案:

答案 0 :(得分:2)

您需要WHERE子句来选择所需的记录。您必须获取要删除的所选用户的用户名并将其传递给@UserName参数。

 var userName = (listBox.SelectedItem as DataRowView)["UserName"].ToString();
 string sql = @"DELETE FROM staff1 WHERE Username = @UserName;";

 SqlCommand cmd = new SqlCommand(sql, con);
 cmd.Parameters.AddWithValue("@UserName",useName);

 cmd.ExecuteNonQuery();
 con.Close();

有关如何在SQL中使用参数的信息,请参阅this thread

答案 1 :(得分:1)

当您执行删除查询时,为了从表中只删除1行,您需要添加WHERE子句。

根据评论,工作流程应该是这样的:您单击删除按钮,将要删除的工作人员的姓名发送到命令,如下所示:

 string sql = @"DELETE FROM staff1 where Name=@Name;";

 SqlCommand cmd = new SqlCommand(sql, con);
 cmd.Parameters.AddWithValue("@Name","NameReceivedFromList");

 cmd.ExecuteNonQuery();
 con.Close();

答案 2 :(得分:0)

当你删除时,你应该记得添加一个Where子句,它实际上非常强大,这里有一些例子可以帮助你开始

以下查询将只删除一个元素

DELETE FROM Table WHERE Table.PrimaryField = Value

以下查询将删除所有匹配的项目

DELETE FROM Table WHERE Table.Field = Value

您还可以在删除语句中加入更复杂的删除查询

DELETE A FROM Table A 
INNER JOIN TableB B ON A.Key = B.Key
WHERE B.PrimaryField = Value