繁体   English   中英

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

[英]How to remove single item in database from a listbox?

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

我的代码:

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

如果剩下的行没关系,则可以使用TOP(1)

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

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

MSDN

当TOP与DELETE一起使用时,引用的行不会以任何顺序排列,并且该语句中不能直接指定ORDER BY子句。 如果需要使用TOP以有意义的时间顺序删除行,则必须在subselect语句中将TOP与ORDER BY子句一起使用。 请参阅本主题后面的“示例”部分。 TOP不能在针对分区视图的DELETE语句中使用。

加。 TOP(1)

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

您可以尝试像这样使用TOP:

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

另外,您的代码也易于进行SQL注入。 您可以使用参数化查询来摆脱它。

为此,您需要具有带有外键“唯一”的“产品”列,否则,您需要传递ID或另一个唯一列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM