如何解决 vb.net 中的这个 SQL 语法错误?
Posted
技术标签:
【中文标题】如何解决 vb.net 中的这个 SQL 语法错误?【英文标题】:How to solve this SQL syntax error in vb.net? 【发布时间】:2019-11-09 10:43:31 【问题描述】:我不知道如何解决这个错误。请帮我解决这个问题!
Dim Command As mysqlCommand
Dim reader As MySqlDataReader
Dim query As String
query = "INSERT into fishshop.recordsale (name,itemuse,description,price,qty,total,amount,change) values('" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox5.Text & "','" & TextBox4.Text & "','" & TextBox6.Text & "','" & TextBox7.Text & "','" & TextBox9.Text & "','" & TextBox10.Text & "')"
Command = New MySqlCommand(query, Moduleconn.conn)
reader = Command.ExecuteReader
MsgBox("transaction Successfuly Saved", MsgBoxStyle.Information, "Message")
conn.Close()
错误图片:
【问题讨论】:
学习使用参数!这可能会消除您现在遇到的问题。 您创建了数据库吗? price、qty、total、amount、change 是什么数据类型?你真的需要存钱找零吗? 【参考方案1】:change
是 MySql 的 reserved word。
您必须在它周围使用反引号才能在语句中使用它:
INSERT .....(..., `change`) VALUES .....
此外,如果 change
和 total
列是数字列,请先从 TextBox
es 文本中删除 ,
,然后再将它们保存到表中。
【讨论】:
【参考方案2】:让您的数据库对象保持在本地,这样您就可以控制它们是否被关闭和处置。 Using...End
即使出现错误,使用块也会为您解决这个问题。
读取器用于检索数据。要插入、更新或删除数据,请使用 .ExecuteNonQuery
。
使用Parameters
来避免Sql Injection。这非常重要,因为恶意用户可能会破坏您的数据库。参数只是服务器认为的值,而不是用户可以在文本框中输入的 Drop table 等可执行代码。
您必须打开一个连接才能使用它。 (DataAdapter
不是这样,它会为您打开和关闭它)始终在可能的最后一秒打开连接(就在 .Execute
之前)并尽快关闭它(始终在消息框之前。)
Private Sub Insert()
Using conn As New MySqlConnection("Your connection string."),
Command As New MySqlCommand("Inset Into fishshop.recordsale (name,itemuse,description,price,qty,total) values(@name,@itemuse,@description,@price,@qty,@total)", conn)
With Command.Parameters
.Add("@name", MySqlDbType.String, 50).Value = TextBox2.Text
.Add("@itemuse", MySqlDbType.String, 50).Value = TextBox3.Text
.Add("@description", MySqlDbType.String, 50).Value = TextBox5.Text
.Add("@price", MySqlDbType.Decimal).Value = CDec(TextBox4.Text)
.Add("@qty", MySqlDbType.Int32).Value = CInt(TextBox6.Text)
.Add("@total", MySqlDbType.Decimal).Value = CDec(TextBox7.Text)
End With
conn.Open()
Command.ExecuteNonQuery()
End Using 'closes and disposes connection and command
MsgBox("transaction Successfuly Saved", MsgBoxStyle.Information, "Message")
End Sub
【讨论】:
以上是关于如何解决 vb.net 中的这个 SQL 语法错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 vb.net 应用程序中的 mysql 定义错误?