【发布时间】:2019-09-18 02:10:05
【问题描述】:
我的 ASP.NET MVC 项目中有一个更新子句,我只想使用当前时间更新单个字段。我知道我也可以使用 GETDATE(),但我需要从服务层传递日期参数。因此,查询完全如下所示,我也尝试在 MSSQL Server 上使用它,但遇到同样的错误:“Incorrect syntax near '.2019'.”
UPDATE com.[Ticket] SET Updated = 29.04.2019 15:25:58 WHERE [Id] = 103
这是我构建 sql 子句的代码端:
DateTime lastUpdate = DateTime.Now;
string sql = "UPDATE com.[Ticket] SET Updated = " + lastUpdate + " WHERE [Id] = " + model.Id;
更新的字段是 n 日期时间类型。我必须在更新子句中格式化日期参数吗?
【问题讨论】:
-
您显然是在查询中替换文本值。不要那样做。阅读如何使用正确类型的参数。你避免了这个问题,作为一个重要的好处,你还避免了 SQL 注入。
-
如果以某种方式传递值,请使用变量类型,因此在放入查询时会正确键入。
-
'2019-04-29 15:25:58'并且由于您使用的是查询,因此只需传递一个日期时间参数 -
如果您不想编写样板代码,请使用
SqlCommand及其Parameters属性,或者类似Dapper 的东西。通常,您不希望通过连接文本来创建查询,即使您传递的是“安全”常量;这会导致计划缓存污染。
标签: c# sql sql-server tsql sql-server-2008