使用c#更新sql server中的日期字段时出错

时间:2013-07-10 11:05:18

标签: c# sql jquery-ui-datepicker

我正在尝试将日期(仅日期,而不是日期时间)插入到sql表中(数据类型为date)。

我正在使用我从jquery datepicker获取的'23/07/2013'格式。

当我执行以下sql时,我收到以下错误。

SQL:UPDATE qmsAuditFindings SET FindDate='23/07/2013' WHERE AuditID=37

请指教。

另外值得一提的是,具有确切格式的insert语句工作得很好。只是更新没有。

enter image description here

1 个答案:

答案 0 :(得分:1)

从表面上看,这只是一个格式问题 - 但“修复格式”是解决这个问题的错误方法。你应该参数化,这样格式化根本就不适用。日期不会拥有“格式”,因为它们只是数字。例如,我们应该可能执行的是:

UPDATE qmsAuditFindings SET FindDate=@findDate WHERE AuditID=@auditId

为此,您可以在.NET代码中获得DateTime值,并执行以下操作:

DateTime findDate = ...
int auditId = ...
using(var cmd = connection.CreateCommand()) {
    cmd.CommandText =
        "UPDATE qmsAuditFindings SET FindDate=@findDate WHERE AuditID=@auditId";
    cmd.Parameters.AddWithValue("findDate", findDate);
    cmd.Parameters.AddWithValue("auditId", auditId);
    cmd.ExecuteNonQuery();
}

或更简单地使用像“dapper”这样的工具:

DateTime findDate = ...
int auditId = ...
connection.Execute(
    "UPDATE qmsAuditFindings SET FindDate=@findDate WHERE AuditID=@auditId",
    new { findDate, auditId });