Синтаксическая ошибка в 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.

Другие вопросы по тегам