Добавление записей с DataGriedView в таблицу SQL
У меня есть вот така база данных:
CREATE DATABASE CollegeCafeteria;
USE CollegeCafeteria;
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(255),
Category VARCHAR(255),
Description TEXT,
PricePerUnit DECIMAL(10, 2),
ExpiryDate DATE
);
CREATE TABLE Ingredients (
IngredientID INT PRIMARY KEY,
IngredientName VARCHAR(255),
Quantity DECIMAL(10, 2),
UnitOfMeasure VARCHAR(50),
PricePerUnit DECIMAL(10, 2)
);
CREATE TABLE Dishes (
DishID INT PRIMARY KEY,
DishName VARCHAR(255),
Description TEXT,
Ingredients VARCHAR(255),
Price DECIMAL(10, 2)
);
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
Date DATE,
Time TIME,
DishID INT,
Quantity INT,
Price DECIMAL(10, 2),
FOREIGN KEY (DishID) REFERENCES Dishes(DishID)
);
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name VARCHAR(255),
Surname VARCHAR(255),
Address VARCHAR(255),
PhoneNumber VARCHAR(20)
);
CREATE TABLE Suppliers (
SupplierID INT PRIMARY KEY,
SupplierName VARCHAR(255),
ContactName VARCHAR(255),
Address VARCHAR(255),
PhoneNumber VARCHAR(20)
);
CREATE TABLE Inventory (
ProductID INT,
Quantity INT,
PurchaseDate DATE,
ProductionDate DATE,
ShelfLife INT,
PRIMARY KEY (ProductID),
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
INSERT INTO Products (ProductID, ProductName, Category, Description, PricePerUnit, ExpiryDate)
VALUES
(1, 'Молоко', 'Молочні продукти', 'Натуральне коров''яче молоко', 28.50, '2023-05-10'),
(2, 'Хліб', 'Хлібобулочні вироби', 'Борошняний хліб', 12.90, '2023-04-30'),
(3, 'Картопля', 'Овочі', 'Свіжа картопля', 9.50, '2023-04-20'),
(4, 'Яблука', 'Фрукти', 'Соковиті червоні яблука', 14.75, '2023-04-25'),
(5, 'Куряче філе', 'М''ясо', 'Свіже куряче філе', 35.20, '2023-04-15');
INSERT INTO Ingredients (IngredientID, IngredientName, Quantity, UnitOfMeasure, PricePerUnit)
VALUES
(1, 'Цукор', 0.5, 'кг', 16.80),
(2, 'Сіль', 0.2, 'кг', 5.40),
(3, 'Олія соняшникова', 1, 'л', 35.90),
(4, 'Масло вершкове', 0.2, 'кг', 28.50),
(5, 'Куряче яйце', 6, 'шт', 19.20);
INSERT INTO Dishes (DishID, DishName, Description, Ingredients, Price)
VALUES
(1, 'Борщ', 'Традиційний український борщ', 'Буряк, картопля, морква, капуста, цибуля', 25.90),
(2, 'Вареники з картоплею', 'Ніжні вареники з картоплею', 'Картопля, борошно, цибуля', 18.50),
(3, 'Салат "Олів''є', 'Класичний олів''є зі свіжими овочами', 'Картопля, морква, огірок, горошок, майонез', 28.90),
(4, 'Котлети по-київськи', 'Сочні котлети з начинкою з вершкового масла', 'Фарш м''ясний, вершкове масло, хліб, яйце', 32.50),
(5, 'Плов', 'Смачний узбецький плов', 'Рис, баранина, морква, цибуля, спеції', 38.70);
INSERT INTO Orders (OrderID, Date, Time, DishID, Quantity, Price)
VALUES
(1, '2023-04-01', '12:30:00', 1, 2, 51.80),
(2, '2023-04-02', '13:15:00', 3, 1, 28.90),
(3, '2023-04-02', '18:45:00', 2, 3, 55.50),
(4, '2023-04-03', '11:00:00', 4, 2, 65.00),
(5, '2023-04-03', '14:30:00', 5, 1, 38.70);
INSERT INTO Customers (CustomerID, Name, Surname, Address, PhoneNumber)
VALUES
(1, 'Олександр', 'Петров', 'вул. Шевченка 10, Київ', '+380991234567'),
(2, 'Марія', 'Ковальчук', 'вул. Садова 7, Львів', '+380992345678'),
(3, 'Іван', 'Сидоренко', 'пр. Перемоги 25, Харків', '+380993456789'),
(4, 'Олена', 'Смирнова', 'вул. Лєщенка 3, Одеса', '+380994567890'),
(5, 'Андрій', 'Коваленко', 'пл. Незалежності 1, Дніпро', '+380995678901');
-- Додавання даних до таблиці "Постачальники"
INSERT INTO Suppliers (SupplierID, SupplierName, ContactName, Address, PhoneNumber)
VALUES
(1, 'ТОВ "Молоко"', 'Іванов Олександр', 'вул. Заводська 15, Київ', '+380671234567'),
(2, 'ПП "Хлібний рай"', 'Петренко Василь', 'вул. Центральна 22, Львів', '+380672345678'),
(3, 'ТОВ "Овочевий сад"', 'Сидоров Микола', 'пр. Гагаріна 5, Харків', '+380673456789'),
(4, 'ФОП "Фруктик"', 'Смирнова Олена', 'вул. Фруктова 10, Одеса', '+380674567890'),
(5, 'ТОВ "М''ясний рай"', 'Коваленко Андрій', 'пр. М''ясний 7, Дніпро', '+380675678901');
INSERT INTO Inventory (ProductID, Quantity, PurchaseDate, ProductionDate)
VALUES
(1, 50, '2023-03-20', '2023-03-18'),
(2, 30, '2023-03-25', '2023-03-24'),
(3, 100, '2023-03-22', '2023-03-20'),
(4, 40, '2023-03-28', '2023-03-27'),
(5, 20, '2023-03-30', '2023-03-29');
Сама форма программы выглядит следующим образом:
Как мне сделать кнопку добавления таким образом, чтобы она принимала данные с ячеек DataGriedView1, формировала правильный запрос в базу данных и добавляла туда новую запись и была универсальной для всех таблиц. Сейчас код этой кнопки выглядит так:
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter();
connection.Open();
string query = $"INSERT INTO {selectedTable} VALUES (";
adapter.InsertCommand = new SqlCommand(query, connection);
int lastRowIndex = dataGridView1.Rows.Count - 1;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
query += Convert.ToString(dataGridView1[lastRowIndex, i].Value.ToString());
//query += $"@Param{i}";
if (i < dataGridView1.Columns.Count - 1)
query += ", ";
}
query += ")";
SqlCommand command = new SqlCommand(query, connection);
command.ExecuteNonQuery();
LoadTableData(selectedTable);
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
}
Источник: Stack Overflow на русском