private void button1_Click(object sender, EventArgs e)
{
cn.Open();
SqlCommand cmd = new SqlCommand("UPDATE MEDICINE_REGISTRATION SET stock = @RStock WHERE id= " + Order_Datagridview.SelectedRows[0].Cells["id"].Value.ToString() + "", cn);
foreach (DataGridViewRow row in Order_Datagridview.Rows)
{
// cmd.Parameters.AddWithValue("@RStock", row.Cells["RStock"].Value);
cmd.Parameters.Add("@RStock", SqlDbType.VarChar).Value = Order_Datagridview.SelectedRows[0].Cells["RStock"].Value.ToString();
cmd.ExecuteNonQuery();
MessageBox.Show("Success");
cmd.Parameters.Clear();
}
cn.Close();
}
ответ
Инициализация условия WHERE находится вне цикла и всегда содержит идентификатор первой строки, а не идентификатор последующих строк. параметров должны быть добавлены для каждого значения, которое вы принимаете от вашей сетки, а также идентификатор должен быть параметризованным
Наконец параметры могут быть добавлены только один раз, а затем вы можете просто обновить их значения
private void button1_Click(object sender, EventArgs e)
{
cn.Open();
SqlCommand cmd = new SqlCommand(@"UPDATE MEDICINE_REGISTRATION
SET stock = @RStock
WHERE id= @id", cn);
cmd.Parameters.Add("@RStock", SqlDbType.VarChar).Value = "";
cmd.Parameters.Add("@id", SqlDbType.Integer).Value = 0;
foreach (DataGridViewRow row in Order_Datagridview.Rows)
{
// Use the row indexer here, not the fixed row at index zero
cmd.Parameters["@RStock"].Value = row.Cells["RStock"].Value.ToString();
cmd.Parameters["@id"].Value = Convert.ToInt32(row.Cells["id"].Value);
cmd.ExecuteNonQuery();
}
cn.Close();}
}
Есть что сказать и об использовании одноразовых объектов, таких как соединение и команда. Эти объекты должны быть созданы при необходимости и размещены сразу после использования. Проверить о using statement для этой модели
Спасибо, сэр, Стив. Сейчас он работает :) – Shyl
возможно
foreach (DataGridViewRow row in Order_Datagridview.SelectedRows)
{
..... DataGridViewRow.Cells["RStock"].Value.ToString();
}
?
Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). - [Из обзора] (/ review/low-quality-posts/10653406) – maurycy
Ooops .. Думал, что я не мог комментировать, и это выглядело как ответ на меня. Трудно проверить без доступа к db;) – noontz
@noontz: * Несколько слов *, описывающих, что не так в коде афера, помогут вам лучше ответить. Также это мешает другим думать о ответе в качестве комментария. [Как правило, код в ответе должен сопровождаться некоторым описанием.] – Tsyvarev
Внутри вашего Еогеаспа, вы не используете DataGridViewRow, вы все еще используете DataGridView.Selected [0]. Если вы хотите сделать это, я хотел бы сделать пару изменений:
- сохранить возвращаемое значение ExecuteNonQuery() и MessageBox.Show, что значение
- в cmd.Parameters, убедитесь, что вы добавить текущую строку ,
- Я бы, вероятно, создал отдельную команду для каждой строки.
Что-то вроде этого, может быть:
private void button1_Click(object sender, EventArgs e)
{
cn.Open();
foreach (DataGridViewRow row in Order_Datagridview.Rows)
{
SqlCommand cmd = new SqlCommand("UPDATE MEDICINE_REGISTRATION SET stock = " + row.cless["RStock"].Value + " WHERE id= " + row.Cells["id"].Value.ToString() + " ", cn);
MessageBox.Show(cmd.ExecuteNonQuery());
}
cn.Close();
}
Если это не сработает, попробуйте схватить DataTable или DataView источник, лежащий в основе этой таблицы и сделать то же самое, что и выше.
Спасибо, сэр. Он работает сейчас :) – Shyl
Спасибо, Шил! Если вы отметите ответ, который сработал для вас, это поможет тем из нас, кто помогает. :) –
- 1. Обновление нескольких строк в datagridview все равно
- 2. Выбор нескольких строк в datagridview
- 3. Удаление нескольких строк в datagridview
- 4. Удаление нескольких строк в DataGridView
- 5. Обновление нескольких проверочных строк в DataList C#
- 6. Обновление нескольких выбранных объектов INofityPropertyChange в DataGridView
- 7. Обновление нескольких строк в IQueryable
- 8. Обновление Datagridview (C#)
- 9. C# - Обновление Datagridview
- 10. Обновление нескольких строк подключения
- 11. Обновление нескольких строк
- 12. Postgres Обновление нескольких строк
- 13. Обновление многих (нескольких) строк
- 14. Эффективное обновление нескольких строк
- 15. Обновление нескольких строк SQL
- 16. Обновление нескольких строк
- 17. Обновление нескольких строк MySQL
- 18. Обновление нескольких выходных строк
- 19. Codeigniter: обновление нескольких строк
- 20. Обновление нескольких строк MySQL
- 21. C# Добавление строк в DataGridView
- 22. Обновление нескольких строк в оракула
- 23. Обновление нескольких строк в nhibenrate
- 24. Обновление нескольких строк в SQL
- 25. Обновление нескольких строк в listview
- 26. Обновление нескольких строк в таблице
- 27. Обновление нескольких строк в MySQL
- 28. Обновление нескольких строк в gridview.
- 29. Обновление нескольких строк в Zend
- 30. C# выбор нескольких строк в datagridview по флажку
Если вы хотите задать вопрос, задайте вопрос. Не просто сбрасывайте код и надейтесь на лучшее. – HoneyBadger
Код обновляет только первую строку. Все, что я хочу, - обновить все строки в datagridview. Когда я нажимаю кнопку. Что мне делать? В чем проблема ? – Shyl
Их очень много. – Oliver