Sql Update命令VB.Net With Date

时间:2015-04-28 20:02:21

标签: sql-server vb.net sql-update

我有一个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#'中的语法错误(缺少运算符)。

感谢您的帮助

1 个答案:

答案 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子句前面缺少的空格。