Как обновить весь datatable с помощью цикла for В C#
Я хочу обновить весь datatable в c# connected to access(oledb) с помощью цикла for, datatable в порядке, соединение в порядке, проблема в том, что обновление просто выполняется на первой строке, а другие строки остаются неизменными. вот мой код:
OleDbCommand1.CommandText = "UPDATE data Set [pivot] =@pivot WHERE [ID] = @id"; for (int i = 0; i < n; i++) { float OP =float.Parse(dt.Rows[i]["openPrice"].ToString()); float CP = float.Parse(dt.Rows[i]["closePrice"].ToString()); float HP = float.Parse(dt.Rows[i]["highPrice"].ToString()); pivotValue = (OP + CP + HP) / 3; pivotValueString = pivotValue.ToString(); OleDbCommand1.Parameters.AddWithValue("@pivot", pivotValueString); OleDbCommand1.Parameters.AddWithValue("@id", int.Parse(dt.Rows[i]["ID"].ToString())); // OleDbCommand1.CommandText = "UPDATE data Set [pivot] =@pivot WHERE [ID] = @id"; OleDbCommand1.ExecuteNonQuery(); }
Что я уже пробовал:
Я изменил место OleDbCommand1.CommandText , внутри и снаружи цикла for, но ничего не изменилось.
Я буду рад, если кто-нибудь поможет.
ZurdoDev
Отладьте его и выясните, что происходит. Например, регистрация инт.Синтаксический анализ(ДТ.Строки[я]["ИД"].ToString() каждый раз, когда он проходит через цикл.
Вам также нужно очистить свои параметры внутри цикла, так как вы всегда вызываете AddWithValue. OleDbCommand1.Параметры.Четкий();
Просто сделайте некоторую базовую отладку, и вы сможете очень быстро узнать, что происходит.
sepidehGandom
Большое спасибо, это сработало, я не знал этого кода, Вы действительно сэкономили мне энергию
Richard MacCutchan
Почему вы преобразуете значения в строки только для того, чтобы вы могли преобразовать их обратно в числа? И вы не должны использовать поплавки для финансовых значений; используйте типы int или decimal.