关于c#:无法使用字典为日期插入null


cannot insert null for date using dictionary

我正在尝试使用C_和SQL插入记录,但当日期列为空时出现了这个错误,我搜索了类似的情况,但还没有解决。它插入了01/01/1900,表中的列是datetime any idea或类似的case链接。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[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;


哈桑我有同样的问题,除了使用可以为空的datetime DateTime?对象之外,技巧是按如下方式更正三元运算符:

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

而不是

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


正如Asthasrivastava所说,您可以在空值上找到DateTime行为的简短描述。

问题:日期时间"空"值

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

在简短的查找之后,我发现了一个与您类似的问题,以DBNull.Value为例。查一下,如果它能帮助你给答案一个赞成票。

问题:可以为空的日期时间和数据库