Как сделать запрос на обновление данных в таблице

Рейтинг: 0Ответов: 0Опубликовано: 27.05.2023

Есть в базе данных таблица Candies. В разрабатываемом приложении есть возможность обновить данные в этой таблице: пользователь вводит новые данные в текстбоксы и нажимает на кнопку, после чего строка обновляется. Вот модель данных этой таблицы:

internal class CandiesModel
    {
        public int id { get; set; }
        public string type { get; set; }
        public string name { get; set; }
        public decimal weight { get; set; }
        public decimal price { get; set; }
        public string producer { get; set; }
        public string country { get; set; }
        public CandiesModel(int id, string type, string name, decimal weight, decimal price, string producer, string country)
        {
            this.id = id;
            this.type = type;
            this.name = name;
            this.weight = weight;
            this.price = price;
            this.producer = producer;
            this.country = country;
        }
    }  

Но проблемы начинаются, когда необходимо поменять только несколько полей, а не все. Например нужно поменять только поле name, а остальные оставить как есть. В таком случае пользователю нужно ввести все поля. Но нужно сделать так, чтобы он ввёл только id и name, а остальные текстбоксы оставил пустыми. Как создать такой запрос? Использую паттерн репозиторий, вот код из репозитория(метод на обновление данных):

public void Update(CandiesModel item)
        {
            connection.Open();
            SqlCommand updateCmd = new SqlCommand($"UPDATE Candies SET " +
                $"CandyType = '{item.type}', CandyName = '{item.name}', CandyWeight = '{item.weight}', Price = '{item.price}'," +
                $"Producer = '{item.producer}', Country = '{item.country}' WHERE CandyID = {item.id}", connection);
            updateCmd.ExecuteNonQuery();
            connection.Close();
        }

item - это объект класса CandiesModel, который формируется из значений, введённых пользователем в текстбоксы вот таким образом:

CandiesModel updatedCandy = new CandiesModel(int.Parse(tbChangeId.Text), tbChangeType.Text, tbChangeName.Text,
                    decimal.Parse(tbChangeWeight.Text), decimal.Parse(tbChangePrice.Text), tbChangeProducer.Text, tbChangeCountry.Text);
//и тут уже вызывается метод из репозитория
candies.Update(updatedCandy);

Ответы

Ответов пока нет.