我有一个带有用户名的列表框,还有一个删除按钮我希望在单击删除按钮时删除所选用户(所有输入的数据与该用户相关联)。
我的代码
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();
此代码删除整个表。
如何删除所选用户?
答案 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