MySQLConnector c#更新MySqlCommand参数

时间:2016-07-26 13:18:21

标签: c# mysql .net mysql-connector

我在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

谢谢

1 个答案:

答案 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建议限制其使用。