Member 14090191 Ответов: 2

У меня здесь есть некоторые проблемы с ошибкой обновления синтаксиса


Дим sqlupdate как String = "datasiswa обновление установить имя='" &амп; поле textbox2.Текст &ампер; "', Аламат='" &амп; textbox3 и.Текст &ампер; "', кота='" &ампер; элемент combobox1.Текст &ампер; "', Provinsi='" &амп; ComboBox2.Текст &ампер; "', Kelamin Женис='" &амп; ComboBox3.Текст &ампер; "', Умур='" &амп; TextBox4.Текст &ампер; "', Jurusan='" &амп; ComboBox4.Текст &ампер; "', Kelas='" &амп; TextBox5.Текст &ампер; "', где N='" &амп; текстовое поле textbox1.Текст &ампер; "'"
cmd = New OleDbCommand(sqlupdate, conn)
УМК.Метод executenonquery()
Позвони Тампилу()
Конец, Если
Конец, Если
Конец Подводной Лодки

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

я пробовал проверять но все та же ошибка пожалуйста помогите мне

2 Ответов

Рейтинг:
1

Patrice T

Dim sqlupdate As String = "Update datasiswa set Name='" & TextBox2.Text & "', Alamat='" & TextBox3.Text & "', Kota='" & ComboBox1.Text & "', Provinsi='" & ComboBox2.Text & "', Jenis Kelamin='" & ComboBox3.Text & "', Umur='" & TextBox4.Text & "', Jurusan='" & ComboBox4.Text & "', Kelas='" & TextBox5.Text & "', where NIS='" & TextBox1.Text & "'"

Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
0

Dave Kreskowiak

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

Google для "SQL-инъекции", чтобы узнать, почему то, что вы делаете, так плохо.

Тогда погугли для "VB.NET параметризованные запросы sql", чтобы узнать, как это исправить. Это также приведет к устранению проблемы с инструкцией обновления и значительно облегчит отладку и поддержку вашего кода.

Для начала, эта мерзость:

"Update datasiswa set Name='" & TextBox2.Text & "', Alamat='" & TextBox3.Text & "', Kota='" & ComboBox1.Text & "', Provinsi='" & ComboBox2.Text & "', Jenis Kelamin='" & ComboBox3.Text & "', Umur='" & TextBox4.Text & "', Jurusan='" & ComboBox4.Text & "', Kelas='" & TextBox5.Text & "', where NIS='" & TextBox1.Text & "'"

будет это:
"UPDATE datasiswa SET Name=@Name, Alamat=@Alamat, Kota=@Kota, Provinsi=@Provinsi, [Jenis Kelamin]=@Jenis, Umur=@Umur, Jurusan=@Jurusan, Kelas=@Kelas WHERE NIS=@NIS"

О, и это не очень хорошая идея, чтобы иметь пробелы в именах таблиц и столбцов. Если вы это сделаете, то они будут заключены в квадратные скобки. Просто избегайте размещения там пробелов для начала и сделайте свою жизнь проще.