Pallavi 24 Ответов: 2

Как добавить значение текстового поля со значением в таблице с помощью команды update ?


Пользователь введет значение количества в текстовое поле. Это значение я хочу добавить вместе со значением, присутствующим в столбце Quantity в базе данных. Как я его выполняю ?

Что я уже пробовал:

УМК.Свойства commandtext = "книги обновление установить количество=количество + txtUpdateQuantity.Текст, где Name='"+txtBookName.Текст+ "' и автор='"+txtBookAuthor.Текст+"';";

2 Ответов

Рейтинг:
2

Karthik_Mahalingam

string qty = txtUpdateQuantity.Text;
           string book = txtBookName.Text;
           string author = txtBookAuthor.Text;
           SqlCommand cmd = new SqlCommand();
           cmd.Connection = con;
           cmd.CommandText = "update Books set Quantity=Quantity + @qty  where Name=@book and Author=@author ";
           cmd.Parameters.AddWithValue("@qty", qty);
           cmd.Parameters.AddWithValue("@book", book);
           cmd.Parameters.AddWithValue("@author", author);
           con.Open();
           cmd.ExecuteNonQuery();



Форматирование строки sql-запроса уязвимый к SQL-инъекция[^] атаки
всегда использовать Параметризованные запросы для предотвращения атак SQL-инъекций в SQL Server[^]


Рейтинг:
15

OriginalGriff

Только не так! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.
Во-первых, разберите числовые значения на числовые переменные:

int qty;
if (!int.TryParse(txtUpdateQuantity.Text, out qty))
    {
    ... report a problem to the user ...
    return;
    }

Тогда попробуйте что-нибудь вроде этого:
using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("UPDATE Books SET Quantity = Quantity + @QT WHERE [Name] = @NM AND Author = @AU", con))
        {
        cmd.Parameters.AddWithValue("@QT", qty);
        cmd.Parameters.AddWithValue("@NM", txtBookName.Text);
        cmd.Parameters.AddWithValue("@AU", txtBookAuthor.Text);
        cmd.ExecuteNonQuery();
        }
    }


Pallavi 24

Свойство connectionString не инициализировано.
Я получаю эту ошибку.

OriginalGriff

А что вы положили в strConnect?

Pallavi 24

Огромное спасибо. Я внес изменения, и теперь он работает отлично.

Pallavi 24

Я не использовал строку подключения.На самом деле модифицированный код ur и я использовал следующий код:
SqlCommand cmd= con.CreateCommand();
УМК.CommandType = CommandType. Text;
УМК.Свойства commandtext="книги обновление установить количество = количество + @интервала QT где имя = @Нм и автор = @АС";
УМК.Параметры.AddWithValue ("@QT", кол-во);
УМК.Параметры.AddWithValue("@NM", txtBookName. Text);
УМК.Параметры.AddWithValue ("@AU", txtBookAuthor. Text);
УМК.Метод executenonquery();
Ящик для сообщений.Show ("успешно обновлено");
против.Закрывать();

OriginalGriff

Пожалуйста!