[英]I keep getting this error when trying to create a tabe in Access through vb.net using SQL: OleDbExcetion was unhandled
[英]Trying to update record, keep getting this error vb.net
我确定这个问题对您来说很容易... :)我只是在尝试使用以下方法更新数据库中的现有记录:
Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
If Not cnn.State = ConnectionState.Open Then
cnn.Open()
End If
cmd2.Connection = cnn
cmd2.CommandText = "UPDATE HireItemRecord SET HireItemBeginDate = " & TextBox45.Text & _
" ,HireItemEndDate = " & TextBox44.Text & _
" ,HireItemCost = " & TextBox16.Text & _
" ,PaymentMethod = " & TextBox17.Text & _
" ,Staff_Id = " & TextBox19.Text & _
" ,HireItemNotes = " & TextBox18.Text & _
" ,HireItemReturnDate = " & TextBox43.Text & _
"WHERE HireRecord_Id = " & TextBox13.Text
cmd2.ExecuteNonQuery()
ds1.Clear()
daHireItemRecord.Fill(ds1, "PersonDetails")
cnn.Close()
End Sub
但是,无论选择什么记录以及框中的任何详细信息,我都会一遍又一遍地收到相同的错误:SqlException未处理未正确的语法'12'附近。
当文本框中绝对没有任何内容时,错误将更改为:','附近的语法不正确。
我对此很陌生,我似乎无法理解为什么会这样。 非常感谢您的帮助。 :)
这太不对了。
i
, x
或tbl
用作变量名,但通常它们应具有描述性。
#2的示例,其中将“'1/1/1999'WHERE 1 = 1-”放入TextBox45:
`UPDATE HireItemRecord SET HireItemBeginDate = '1/1/1999' WHERE 1=1 -- , HireItemEndDate...`
--
之后的所有内容都会变成评论,因此您得到了以下信息:
`UPDATE HireItemRecord SET HireItemBeginDate = '1/1/1999' WHERE 1=1`
您能想象如果执行该查询会发生什么? 没什么好的。
您应该按照此问题中的建议使用参数化查询: 避免从C#代码在MSSQL Server上注入SQL的算法?
您永远不应使用字符串连接来构建SQL。 它使您容易受到SQL注入攻击的影响。 尝试使用.Net中提供的SQLCommand对象 。 这使您可以“参数化”查询,而不必担心在何处放置“和”。
它还将允许您自然地添加参数,而不必将其转换为字符串。 像这样:
Dim command As New SqlCommand("SELECT * FROM Table", connection)
command.Parameters.Add("@ID", SqlDbType.Int)
command.Parameters("@ID").Value = customerID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.