该程序是用 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>
是相当大的。我想尝试尽可能少地执行。
Thanks!