c#脚本中的可为空的DateTime

问题描述

我已经编写了一些代码,但是在尝试从数据库添加一个带有“null”的日期作为结果集时,我收到一个错误,即 null 不是日期/时间。

所以看起来,我有以下代码片段的错误......我的问题是:如何正确设置数据类型,“空”数据集不会产生错误

如您所见,首先我会区分某些数据类型以创建正确的对象。但在这种情况下,对于日期,我想允许空对象。

你能帮我吗?

case kdType.Numeric20:
nKSI = ktSI.CreateKeyword(Int32.Parse(""+row[column]));
break;
case kdType.AlphaNumeric:
nKSI = ktSI.CreateKeyword(""+row[column]);
break;
case kdType.Date:                           
nKSI = ktSI.CreateKeyword(DateTime.ParseExact(""+row[column],"dd.MM.yyyy HH:mm:ss",null));                
break;
case kdType.Currency:
nKSI = ktSI.CreateKeyword(Convert.ToDecimal(float.Parse(""+row[column],CultureInfo.CurrentCulture.NumberFormat)));
break;
case kdType.SpecificCurrency:
nKSI = ktSI.CreateKeyword(Convert.ToDecimal(float.Parse(""+row[column],CultureInfo.CurrentCulture.NumberFormat)));
break;

解决方法

在尝试使用 DateTime.ParseExact 之前,您必须检查 db null 值

类似的东西

object dbValue = row[column]
if (dbValue == DbNull.Value)
{
//handle NULL somehow
}
else
{
.... =DateTime.ParseExact(dbValue.ToString(),....);
}