Member 13512434 Ответов: 2

Дополнительная информация: не существует сопоставления типа объекта system.windows.forms.textbox с известным собственным типом управляемого поставщика.


Я пытаюсь использовать параметризованный запрос для изменения (обновления) информации в моей таблице..


    SqlCommand cmd = new SqlCommand("UPDATE [Product Inventory] Quantity = @Quantity", sqlcon);
    cmd.Parameters.AddWithValue("@Quantity", QuantityTxtBx);

    sqlcon.Open();  //open the connection
//    MessageBox.Show("Adjustment has been registered");
    cmd.ExecuteNonQuery();
    sqlcon.Close();  // close the connection


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

    SqlCommand cmd = new SqlCommand("UPDATE [Product Inventory] Quantity = @Quantity", sqlcon);
    cmd.Parameters.AddWithValue("@Quantity", QuantityTxtBx);

    sqlcon.Open();  //open the connection
//    MessageBox.Show("Adjustment has been registered");
    cmd.ExecuteNonQuery();
    sqlcon.Close();  // close the connection

2 Ответов

Рейтинг:
2

Richard Deeming

Цитата:
cmd.Parameters.AddWithValue("@Quantity", QuantityTxtBx);

Ты пытаешься пройти мимо TextBox управление как параметр. Вам нужно сдать экзамен содержание из TextBox вместо:
cmd.Parameters.AddWithValue("@Quantity", QuantityTxtBx.Text);
(Обратите внимание на .Text после имени элемента управления.)


Рейтинг:
0

phil.o

Если количество равно int:

int q;
if (int.TryParse(QuantityTxtBx.Text, out q)) {
   cmd.Parameters.AddWithValue("@Quantity", q);
}
else {
   // Parsing error
}

Никогда не доверяйте вводимым пользователем данным, всегда проверяйте их перед использованием.
Кроме того, текстовое поле-это сложный объект, который никогда непосредственно не транскрипируется в целое число или любой другой интегральный тип. Воспользуйся TryParse метод на основе Text свойство элемента управления получать из него допустимое значение.