无法使用字典为日期插入null

时间:2018-04-17 04:18:51

标签: c#

我试图使用C#和SQL插入记录,但是当日期列为空时我得到了这个错误,我搜索了类似的情况,但还没有解决它。它插入01/01/1900,表中的列是Datetime任何想法或类似的案例链接。

[HttpPost]
public HttpResponseMessage save (Education edu)
{
    Dictionary<string, object> xmt = new Dictionary<string, object>();

    xmt.Add("@Staff_Key", edu.Staff_Key);
    xmt.Add("@Type_Education", edu.Type_Education);
    xmt.Add("@Qual", edu.Qual);
    xmt.Add("@Uni", edu.Uni);
    xmt.Add("@Date_Issue", edu.Date_Issue.ToString() == null ? "Null" : edu.Date_Issue.ToString());
    xmt.Add("@Notes", edu.Notes);

    obj.ExecNonQuery(
       @"insert into HR_DocEducation (Staff_Key,Type_Education,Qual,Uni,Date_Issue,Notes)
       values (@Staff_Key,@Type_Education,@Qual,@Uni,@Date_Issue,@Notes) ",xmt);

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
    return response;

2 个答案:

答案 0 :(得分:2)

如Astha Srivastava所述,您可以找到DateTime对空值的行为的简短描述。

Question: DateTime “null” value

一种可能的方法是使用引用数据库上使用的值的属性DBNull.Value。我建议在使用SQL命令时使用它。

经过简短的查询后,我发现了一个与你类似的问题,以DBNull.Value为例。查找它,如果它可以帮助你给答案一个upvote。

Question: Nullable DateTime and the Database

答案 1 :(得分:2)

哈桑 我有同样的问题,除了使用可空的DateTime DateTime?对象之外,其他技巧正在纠正三元运算符,如下所示:

xmt.Add("@Date_Issue", edu.Date_Issue == null ? (object) DBNull.Value : (object)edu.Date_Issue);

而不是

xmt.Add("@Date_Issue", edu.Date_Issue.ToString() == null ? "Null" : edu.Date_Issue.ToString());