我在C#中有一个foreach循环,执行一个MySql命令检查结果是否存在,问题是我不知道如何更新对应于@id_line
的参数中的值,在第二个时抛出错误迭代
foreach (String[] infos in ReferenceLine.getList())
{
cmd.Parameters.AddWithValue("@id_line", infos[0].ToString());
using (MySqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows) { return true; }
}
}
我考虑检查该值是否存在并删除它但我没有找到此解决方案 clean
谢谢
答案 0 :(得分:1)
将参数声明移到循环外部而不给出显式值,然后在循环内部更新Value属性而不重新声明参数
cmd.Parameters.AddWithValue("@id_line", "");
foreach (String[] infos in ReferenceLine.getList())
{
cmd.Parameters["@id_line"].Value = infos[0].ToString();
using (MySqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows) { return true; }
}
}
但是,使用WHERE条件进行更精确的查询似乎可以完全避免此循环。
还要考虑使用
cmd.Parameters.Add("@id_line", MySqlDbType.VarChar);
而不是AddWithValue。 AddWithValue has some drawbacks建议限制其使用。