InsertStatement 语法错误

Syntax Error in InsertStatement

我正在 MySql 数据库中插入数据,当我单击保存按钮时,它显示

You have an error in sql syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "grade1") VALUES('section1')' at line 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

基本 MySQL 101: Fields/Table 名称不能用反引号以外的任何东西引用。您使用了 ',它将您的字段名称转换为字符串文字。一旦它是字符串文字,它就不再是 table/field 名称:

Sql = "INSERT INTO dbase.tblgrade_section (`" & cbGradeLvl.Selected ... "`...."
                                           ^-----------------------------^---

注意指示的更改。

您不能在列名两边加上引号。使用准备好的语句 "guard" 对抗 sql 注入。