我有一个SQL更新命令,我无法工作。我希望它更新日期等于当前日期的字段。它适用于我的INSERT和SELECT语句。但是当我在下面的Delete语句中使用它时,我得到了一个缺少操作符错误。
Cmd.Connection = conn
Cmd.CommandText = "UPDATE tbl_Expenditure SET E_Stock =" & NewEStock & "," & "E_Total =" & ETotal & "WHERE [E_Date] = #" & thisMonth & "/" & Day & "/" & thisYear & "#;"
Cmd.ExecuteNonQuery()
我尝试过搜索此网站以及其他网站,似乎无法找到答案。
这是我的错误
查询表达式'95WHERE [E_Date] =#4/1/2015#'中的语法错误(缺少运算符)。
感谢您的帮助
答案 0 :(得分:2)
Using conn As New SqlConnection("connection string here"), _
cmd As New SqlCommand("UPDATE tbl_Expenditure SET E_Stock = @Stock, E_Total = @Total WHERE [E_Date] = @Date;", conn)
'Guessing at column types here
cmd.Parameters.Add("@Stock", SqlDbType.Int).Value = NewEStock
cmd.Parameters.Add("@Total", SqlDbType.Decimal, 8, 2).Value = ETotal
cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = New DateTime(thisYear, thisMonth, Day)
cmd.ExecuteNonQuery()
End Using
这修复了代码中的巨大安全问题,它在允许Sql Server缓存您的查询计划方面具有性能优势,并且它解决了您的问题,因为它很多< / em>更容易发现愚蠢的语法错误,例如WHERE
子句前面缺少的空格。