2016-07-26 2 views
0

У меня есть цикл foreach на C#, который выполняет команду MySql, чтобы проверить, существует ли результат, проблема в том, что я не знаю, как обновлять значение в параметрах, соответствующих @id_line, ошибка возникает на вторая итерацияMySQLConnector C# update Параметры MySqlCommand

foreach (String[] infos in ReferenceLine.getList()) 
{ 
    cmd.Parameters.AddWithValue("@id_line", infos[0].ToString()); 
    using (MySqlDataReader reader = cmd.ExecuteReader()) 
    { 
     if (reader.HasRows) { return true; } 
    } 
} 

Я думал о проверке, если значение существует, и удалить его, но я не нашел это решение чистого

Благодаря

ответ

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, которые предлагают ограничить его использование.

Смежные вопросы