【发布时间】:2016-02-28 09:42:52
【问题描述】:
我是 ASP.NET 新手,我需要您的专家帮助来解决这个问题。我正在使用 ASP.NET MVC 5 和 SQL Server。我尝试使用 SQL 向数据库插入一些数据,这是我的查询
INSERT INTO tem (Telephone, Status, CreateDate)
VALUES ('" + telephone + "','"+ status +"','" + DateTime.Now + "');
它在 localhost 中运行良好,但在我部署到服务器后它显示错误消息:
导致将 varchar 数据类型转换为 datetime 数据类型 在一个超出范围的值。声明已终止。
我的DateTime.Now 值类似于28/02/2016 8:45:45 AM。
如果我通过硬编码添加 2016-02-28 8:45:45 AM,那么它就可以工作了。
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
感谢您的评论。它是参数化的,我在测试时对其进行了更改。关于我的问题的任何建议。
-
嗯,建议是:使用参数! 这些不仅可以解决您的 SQL 注入漏洞,正确使用参数还可以解决您的“将日期格式化为字符串”问题(因为您不再需要将日期格式化为字符串 - 您将其作为 native
DateTime值传入)
标签: c# asp.net sql-server asp.net-mvc