Как несколько строк из DataGrid поместить в таблицу в БД
Есть обработчик SellBtn_Click()
:
private void SellBtn_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in DataGridView1.Rows)
{
if (!row.IsNewRow)
{
string storeName = row.Cells["Магазин"].Value.ToString();
string orderNumber = row.Cells["№ Заказа"].Value.ToString();
int quantity = Convert.ToInt32(row.Cells["Кол-во"].Value);
string paymentTerms = row.Cells["Условия оплаты"].Value.ToString();
string titleName = row.Cells["Издания"].Value.ToString();
// Создание команды для вызова хранимой процедуры
using (SqlCommand cmd = new SqlCommand("InsertSalesOrderV2", sqlConn))
{
cmd.CommandType = CommandType.StoredProcedure;
// Добавление параметров
cmd.Parameters.AddWithValue("@stor_name_p", storeName);
cmd.Parameters.AddWithValue("@orderNumber", orderNumber);
cmd.Parameters.AddWithValue("@qty_p", quantity);
cmd.Parameters.AddWithValue("@terms_p", paymentTerms);
cmd.Parameters.AddWithValue("@title_name_p", titleName);
try
{
// Выполнение команды
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("Ошибка при выполнении запроса: " + ex.Message);
}
}
}
}
MessageBox.Show("Данные успешно перенесены в базу данных.");
}
Тут у меня при нажатии данные из первой строки DataGrid
передаются как параметры для хранимой процедуры InsertSalesOrderV2
, в которой происходит вставка в таблицу, но вставка происходит только для первой строки.
ХРАНИМАЯ ПРОЦЕДУРА:
ALTER PROCEDURE [dbo].[InsertSalesOrderV2]
@stor_name_p VARCHAR(40),
@orderNumber VARCHAR(8),
@qty_p SMALLINT,
@terms_p VARCHAR(12),
@title_name_p VARCHAR(40)
as
begin
INSERT INTO sales (stor_id, ord_num, ord_date, qty, payterms, title_id)
VALUES ((select top 1 stor_id
from stores
where stor_name = @stor_name_p), @orderNumber, '1993-05-24 00:00:00.000', @qty_p, @terms_p, (select top 1 title_id
from titles
where title = @title_name_p));
UPDATE titles
SET ytd_sales = ytd_sales - @qty_p
WHERE title_id = @title_name_p
end