提问人:Muhammad Rafif Rais 提问时间:11/9/2022 最后编辑:CraigMuhammad Rafif Rais 更新时间:11/10/2022 访问量:30
System.Data.SqlClient.SqlException: '''附近的语法不正确'。 / cmd.ExecuteNonQuery()
System.Data.SqlClient.SqlException: 'Incorrect syntax near ')'.' / cmd.ExecuteNonQuery()
问:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If NamaBukuBox.Text = " " Or PngrngBukuBox.Text = " " Or PnrbtBukuBox.Text = " " Or JmlhBukuBox.Text = " " Then
MsgBox("Isi Semua Kolom Informasi")
Else
Con.Open()
Dim query = "Insert into BukuTbl values('" & NamaBukuBox.Text & "','" & PngrngBukuBox.Text & "','" & PnrbtBukuBox.Text & "'," & JmlhBukuBox.Text & ")"
Dim cmd As SqlCommand
cmd = New SqlCommand(query, Con)
cmd.ExecuteNonQuery() '** this line is error
MsgBox("Buku Telah Ditambahkan")
Con.Close()
End If
End Sub
我不知道该怎么办 是什么导致了错误以及如何解决它?
答:
1赞
navigator
11/9/2022
#1
这是一种非常危险的代码编写方式。用户输入将直接插入到 SQL 中。如果用户输入任何撇号,则 SQL 将失败。
例如,尝试在 NamaBukuBox 文本框中输入 Abc's。检查生成的 SQL。在最坏的情况下,用户可以注入 SQL 并删除数据和表。
在您的情况下,很可能是用户的输入导致 SQL 失败。请使用参数将用户数据输入到 SQL 中。不要在 SQL 中直接连接用户输入。您的 SQL 应如下所示:
Insert into BukuTbl values(@NamaBukuBox,@PngrngBukuBox,@PnrbtBukuBox,@JmlhBukuBox)
评论
0赞
Craig
11/10/2022
问题比潜在的故障更大,另请参阅“SQL 注入”。这上面有一个 xkcd,搜索“Bobby Tables”。
0赞
navigator
11/10/2022
@Craig:是的,这就是我提到SQL注入的原因。
评论
query