title: ExecuteNonQuery() doesn't updating correctly
body: <p>I would like to update all 2 field records as long as one condition is satisfied. One of the fields is being updated correctly ([Valor] = @sValor). The problem is that the second field ([ValorporPeca] = @sValorPorPeca) is always updated with the value from the last calculated record.</p>
  <p>My procedures are listed below:</p>
  <pre><code>private void BtnGravarPreco_Click(object sender, EventArgs e)
      {
          List&lt;SQLParametro&gt; param;
          GerirDB gerir;
          bool erro = true;
  
          try
          {
              gerir = new GerirDB();
              //List&lt;decimal&gt; dValorPorPeca = new List&lt;decimal&gt;();
              decimal quant, valor, dValorPorPeca;
  
              valor = decimal.Parse(ktbValor.Text.Replace(&quot;R$&quot;, &quot;&quot;).Trim());
  
              const string querySelect = &quot;SELECT * FROM Artesanato WHERE [Material] = @material&quot;;
  
              param = new List&lt;SQLParametro&gt;
              {
                  new SQLParametro(&quot;@material&quot;, kwlMaterial.Text)
              };
  
              using (DataTable dados = gerir.ExeReader(querySelect, param))
              {
                  if (dados.Rows.Count != 0)
                  {
                      foreach (DataRow linha in dados.Rows)
                      {
                          gerir = new GerirDB();
                          quant = decimal.Parse(linha[&quot;Quantidade&quot;].ToString());
                          dValorPorPeca = (valor * quant);
                          //dValorPorPeca.Add(valor * quant);
  
                          const string queryUpdate2 = &quot;UPDATE Artesanato SET [Valor] = @sValor, [ValorporPeca] = @sValorPorPeca WHERE [Material] = @sMaterial&quot;;
  
                          param = new List&lt;SQLParametro&gt;
                          {
                              new SQLParametro(&quot;@sMaterial&quot;, kwlMaterial.Text),
                              new SQLParametro(&quot;@sValor&quot;, ktbValor.Text),
                              new SQLParametro(&quot;@sValorPorPeca&quot;, dValorPorPeca.ToString(&quot;C2&quot;))
                          };
  
                          gerir = new GerirDB();
                          erro = gerir.ExeNonReader(queryUpdate2, param);
                      }
                  }
              }
          }
          catch (Exception ex)
          {
              MsgBox.Show(&quot;Erro:\n&quot; + ex.Message, &quot;Banco de Dados - Artesanato&quot;, TipoIcone.Erro);
          }
  
          if (!erro)
              MsgBox.Show(&quot;Registros atualizados com sucesso!&quot;);
  
          BtnRetornar2_Click(btnRetornar2, KeyEventArgs.Empty);
      }
  
  public DataTable ExeReader(string query, List&lt;SQLParametro&gt; parametros)
      {
          adaptador = new SqlDataAdapter(query, ligacao);
          using (DataTable dados = new DataTable())
          {
              //Parâmetros
              adaptador.SelectCommand.Parameters.Clear();
              foreach (SQLParametro param in parametros)
              {
                  adaptador.SelectCommand.Parameters.AddWithValue(param.Parametro, param.Valor);
              }
  
              try
              {
                  adaptador.Fill(dados);
              }
              catch (SqlException ex)
              {
                  MsgBox.Show(&quot;Erro:\n&quot; + ex.Message, &quot;ERRO&quot;, MsgBox.TipoIcone.Erro);
              }
              finally
              {
                  adaptador.Dispose();
              }
  
              return dados;
          }
      }
  
  
  public bool ExeNonReader(string query, List&lt;SQLParametro&gt; parametros)
      {
          bool Error = false;
  
          comando = new SqlCommand(query);
  
          //Parâmetros
          comando.Parameters.Clear();
          foreach (SQLParametro param in parametros)
          {
              comando.Parameters.AddWithValue(param.Parametro, param.Valor);
          }
  
          ligacao.Open();
  
          comando.Connection = ligacao;
  
          try
          {
              comando.ExecuteNonQuery();
              Error = false;
          }
          catch (SqlException ex)
          {
              MsgBox.Show(ex.Message, &quot;ERRO&quot;, MsgBox.TipoIcone.Erro);
              Error = true;
          }
          finally
          {
              ligacao.Dispose();
          }
          return Error;
      }
  
  public class SQLParametro
      {
          public string Parametro { get; set; }
          public object Valor { get; set; }
          
          public SQLParametro(string param, object value)
          {
              Parametro = param;
              Valor = value;
          }
      }
  </code></pre>