如何从列表框中删除数据库中的单个项目?

时间:2015-10-23 09:05:52

标签: c# sql

如何删除数据库中的单个项目? 当我单击“删除”按钮时,我的代码将删除与列表框中selectedItem相同的所有项目。例如,如果我选择从我的列表框中删除CocaCola,我希望它删除数据库中的单个CocaCola项目而不是所有CocaCola项目。

我的代码:

conn.Open();
SqlCommand cmd = new SqlCommand("delete from Products Where Product ='"+lstProducts.SelectedItem+"'", conn);
cmd.ExecuteNonQuery();
conn.Close();

3 个答案:

答案 0 :(得分:1)

如果保留哪些行并不重要,您可以使用TOP(1)

DELETE TOP (1)
FROM  Products 
Where Product = @Product

请注意,您应该使用sql参数而不是字符串concatanation来防止sql注入和其他不太严重的问题。

MSDN

  

当TOP与DELETE一起使用时,引用的行不会被排列   任何订单和ORDER BY子句都不能直接指定   这个说法。如果需要使用TOP删除有意义的行   按时间顺序,您必须将TOP与ORDER BY子句一起使用   在子选择声明中。请参阅下面的示例部分   这个话题。 TOP不能在DELETE语句中使用   分区视图。

度Acc。到TOP(1)

  

为了向后兼容,括号在SELECT中是可选的   声明。我们建议您始终在TOP中使用括号   SELECT语句与在INSERT中的必需用法的一致性,   括号所在的UPDATE,MERGE和DELETE语句   需要

答案 1 :(得分:1)

您可以尝试使用TOP:

SqlCommand cmd = new SqlCommand("delete top (1) from Products Where Product ='"+lstProducts.SelectedItem+"'", conn);
cmd.ExecuteNonQuery();

此外,您的代码很容易出现SQL注入。您可以使用参数化查询来摆脱它。

答案 2 :(得分:1)

对于此行为,您需要具有外键唯一的Product列,否则您需要传递ID或其他唯一列。