这个程序是用C#编写的,我试图传递一个List<string>
作为参数。
List<string> names = new List<string>{"john", "brian", "robert"};
字符串
在普通SQL中,查询将如下所示:
DELETE FROM Students
WHERE name = 'john' or name = 'brian' or name = 'robert'
型
当在C#代码中运行SQL命令时,我知道正确的方法是使用参数,而不是将所有内容连接到一个巨大的字符串中。
command.CommmandText = "DELETE FROM Students WHERE name = @name";
command.Parameters.Add(new MySqlParameter("@name", String.Format("'{0}'", String.Join("' or name = '", names)));
command.NonQuery();
型
上面的方法不起作用。它没有抛出任何错误/异常,它只是没有按照我想要的方式工作。
我应该如何去做这件事?
我想循环遍历List<string>
,然后只对每个名字执行。
foreach(string name in names)
{
command.CommmandText = "DELETE FROM Students WHERE name = @name";
command.Parameters.Add(new MySqlParameter("@name", name));
command.NonQuery();
command.Parameters.Clear();
}
型
但这将需要很长时间,因为实际的List<string>
是相当大的。我想尝试尽可能少地执行。
谢谢你,谢谢
2条答案
按热度按时间atmip9wb1#
您可以在
IN
子句中参数化列表中的每个值:字符串
类似于:
型
来源:https://stackoverflow.com/a/337792/284240
8fsztsew2#
你可以通过join,创建临时表来完成。
字符串