Member 13780554 Ответов: 1

Как я могу заставить программу выбирать различные выбранные элементы из контрольного списка и обновлять один столбец mysql?


Привет, я нашел здесь кое-что, что говорит, чтобы использовать для этой вещи..
Я стараюсь использовать именно так:
For Each ItemSelecionado In CheckMaterial.CheckedItems
    conn.Open()
    cmd.CommandText = "Update material SET `Quantidade` = `Quantidade` - 1 WHERE `Nome` = '" & CheckMaterial.CheckedItems.Item(ItemSelecionado) & "'"
    cmd.CommandType = CommandType.Text
    cmd.ExecuteNonQuery()
    conn.Close()
Next


Но программа выдала мне эту ошибку:
"The conversion of the string  "Ram 1gb [DDR]" To type ' Integer ' is not valid."


Как я могу решить эту проблему?

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

For Each ItemSelecionado In CheckMaterial.CheckedItems
    conn.Open()
    cmd.CommandText = "Update material SET `Quantidade` = `Quantidade` - 1 WHERE `Nome` = '" & CheckMaterial.CheckedItems.Item(ItemSelecionado) & "'"
    cmd.CommandType = CommandType.Text
    cmd.ExecuteNonQuery()
    conn.Close()
Next

1 Ответов

Рейтинг:
0

Wendelius

Основываясь на сообщении об ошибке, кажется, что столбец Nome в базе данных определяется как целое число. Таким образом, вы должны либо изменить тип данных столбца, либо использовать какое-то другое (целочисленное) свойство из CheckMaterial в условии.

Другое дело, что во избежание проблем преобразования и SQL-инъекций во время выполнения SQL-оператора следует использовать Класс OleDbParameter (System.Data.Для oledb)[^] . Для получения дополнительной информации взгляните на SQL-инъекция - Википедия[^]


Richard Deeming

Разве не более вероятно, что Quantidade колонка не определяется как число, и ошибка возникает при попытке вычесть 1 с веревочки?

Wendelius

Может быть, но сообщение об ошибке

Преобразование строки "Ram 1gb [DDR]" Вводить...

скорее это связано с именем, а не с количеством