我在插入语句中遇到语法错误
Posted
技术标签:
【中文标题】我在插入语句中遇到语法错误【英文标题】:I'm getting syntax error in insert into statement 【发布时间】:2013-08-19 14:56:06 【问题描述】:谁能解决下面的代码请...
注意:前端 vb8 和后端访问 7
Private Sub SaveData()
Dim InsertString As String
InsertString = "Insert into STUDENT DETAILS(SREGNO,SFIRSTNAME,SMIDDLENAME,SLASTNAME,SYEAR,SCOURSE,SSEM,SCLASS,SLANGUAGE)" & "Values('" & Me.TXTSREGNO.Text & "','" & Me.TXTSFIRSTNAME.Text & "','" & Me.TXTSMIDDLENAME.Text & "','" & Me.TXTSLASTNAME.Text & "','" & Me.COMB1SYEAR.Text & "','" & Me.COMB2SCOURSE.Text & "','" & Me.COMB3SSEM.Text & "','" & Me.COMB4SCLASS.Text & "','" & Me.COMB5SLANGUAGE.Text & " ');"
Dim InsertCommand As New OleDbCommand(InsertString, Con)
InsertCommand.ExecuteNonQuery()
MsgBox("New record added successfully.", MsgBoxStyle.Information, "Record Added")
End Sub
【问题讨论】:
1.打印结果字符串。 2. 与预期字符串进行比较。 3.修复算法。 4. 转到 1。 您能否格式化您的代码,使其更具可读性? 另外,考虑使用参数,构建所有类似的查询可能允许用户在您的文本字段中输入引号和wipe your database。 【参考方案1】:错误是包含空格的表的名称,因此您需要将其括在方括号中
INSERT INTO [Student Details] ........
但您确实需要知道如何使用参数化查询。 这段代码真的是Sql Injections的邀请
这就是您可以修改代码以使用参数化查询的方式
Dim InsertString As String
InsertString = "Insert into [STUDENT DETAILS] " & _
"(SREGNO,SFIRSTNAME,SMIDDLENAME,SLASTNAME,SYEAR,SCOURSE,SSEM,SCLASS,SLANGUAGE)" & _
"Values(?,?,?,?,?,?,?,?,?)"
Dim InsertCommand As New OleDbCommand(InsertString, Con)
InsertCommand.Parameters.AddWithValue("@p1", Me.TXTSREGNO.Text )
InsertCommand.Parameters.AddWithValue("@p2", Me.TXTSFIRSTNAME.Text )
InsertCommand.Parameters.AddWithValue("@p3", Me.TXTSMIDDLENAME.Text )
InsertCommand.Parameters.AddWithValue("@p4", Me.TXTSLASTNAME.Text )
InsertCommand.Parameters.AddWithValue("@p5", Me.COMB1SYEAR.Text )
InsertCommand.Parameters.AddWithValue("@p6", Me.COMB2SCOURSE.Text)
InsertCommand.Parameters.AddWithValue("@p7", Me.COMB3SSEM.Text)
InsertCommand.Parameters.AddWithValue("@p8", Me.COMB4SCLASS.Text )
InsertCommand.Parameters.AddWithValue("@p9", Me.COMB5SLANGUAGE.Text)
InsertCommand.ExecuteNonQuery()
是的,您必须编写更多代码,但 Sql Injection 更安全,并且当您的一个或多个文本框字段碰巧包含单引号时,您将永远不会遇到语法错误。
【讨论】:
以上是关于我在插入语句中遇到语法错误的主要内容,如果未能解决你的问题,请参考以下文章