问题描述
我已经编写了一些代码,但是在尝试从数据库中添加一个带有“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(),....);
}