Синтаксическая ошибка в InsertStatement
Я вставляю данные в базу данных MySql, и когда я нажимаю кнопку сохранения, он говорит:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом со значением "grade1") VALUES('section1')'в строке 1 "
Я скопировал его из другого оператора вставки, который работает нормально, но в форме, содержащей только поле со списком и текстовое поле, он дает мне такую ошибку. Они также хотят, чтобы я узнал, как его настроить, чтобы они были свободны от SQL-инъекций. Любая помощь приветствуется. Вот примеры кодов:
conn = New MySqlConnection
conn.ConnectionString = "server=localhost; userid=root; password=root; database=dbase"
Try
conn.Open()
Sql = "INSERT INTO dbase.tblgrade_section ('" & cbGradeLvl.SelectedItem & "') VALUES('" & txtNewSec.Text & "') "
cmd = New MySqlCommand(Sql, conn)
dr = cmd.ExecuteReader
MsgBox("Data saved", vbInformation, "Saving Data")
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
rem End Sub
2 ответа
Базовый MySQL 101: Имена полей / таблиц не могут заключаться в кавычки, кроме обратных кавычек. Вы использовали '
, который превращает имя вашего поля в строковый литерал. ПОЭТОМУ это строковый литерал, это больше не имя таблицы / поля:
Sql = "INSERT INTO dbase.tblgrade_section (`" & cbGradeLvl.Selected ... "`...."
^-----------------------------^---
обратите внимание на указанные изменения.
Вы не можете заключать в кавычки имена своих столбцов. Используйте подготовленное утверждение, чтобы "защитить" от инъекций SQL.