我试图使用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;
答案 0 :(得分:2)
如Astha Srivastava所述,您可以找到DateTime
对空值的行为的简短描述。
Question: DateTime “null” value
一种可能的方法是使用引用数据库上使用的值的属性DBNull.Value
。我建议在使用SQL命令时使用它。
经过简短的查询后,我发现了一个与你类似的问题,以DBNull.Value
为例。查找它,如果它可以帮助你给答案一个upvote。
答案 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());