繁体   English   中英

SQL查询错误:“#”附近的语法不正确?

[英]SQL query error :Incorrect Syntax Near “#”?

当我尝试执行此SQL查询时:

savInto.CommandText = "update onCommands set warnDate =#" & movDate.Value.ToString("MM/dd/yyyy") 
& "#,updateDate =#" & Date.Now.ToShortDateString 
& "#,transportCompany ='" & Trim(Company.Text) 
& "' where ID =" & moveID

我收到此错误:

Incorrect syntax near '#'

好吧,主要的问题是您试图提供参数作为SQL本身的一部分。 尽管有很多方法可以做到(使用撇号而不是# ),但这通常是一个坏主意:

  • 与任意字符串一起使用时会引发SQL注入攻击
  • 这使得阅读代码更加困难
  • 它引入了不必要的字符串转换

相反,您应该使用参数化的SQL并指定参数的值。 就像是:

savInto.CommandText = "update onCommands set warnDate = @warnDate" & 
    ", updateDate = @updateDate, transportCompany = @transportCompany" &
    " where ID=@moveID"
savInto.Parameters.Add("@warnDate", SqlDbType.DateTime).Value = movDate
savInto.Parameters.Add("@updateDate", SqlDbType.DateTime).Value = Date.Now
savInto.Parameters.Add("@transportCompany", SqlDbType.NVarChar).Value = Trim(Company.Text)
savInto.Parameters.Add("@moveID", SqlDbType.NVarChar).Value = moveID

为什么使用#字符? 您正在使用什么数据库(SQL Server,Oracle,MySQL ...)

尝试这个:

savInto.CommandText = "update onCommands set warnDate ='" & movDate.Value.ToString("MM/dd/yyyy") & "',updateDate ='" & Date.Now.ToShortDateString & "',transportCompany ='" & Trim(Company.Text) & "' where ID =" & moveID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM