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 注入。
我正在 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 注入。