首先检查数据库单元格是否为空

8
我正在通过C#访问一个MS Access 2007数据库,每当我尝试读取一个空单元格时,就会出现异常。
具体来说,我正在尝试读取可能为空的“日期/时间”单元格。我正在使用OLE DB,并填充了一个DataSet。以下任何条件都不起作用:
DataSet dataSet = GetDataSet();
DataRow row = dataSet.Tables[0].Rows[0];
DateTime time = new DateTime();
time = (DateTime)row[5];   // Exception thrown

如何在尝试分配之前检查单元格是否为空?这些都不起作用:
if(row[5] == null) ;
if(row[5] == DBNull) ;
if(row[5] == (String)"") ;

编辑:我应该提到:当我调试时,它显示行[5]等于“System.DBNull”,但是当我尝试“if(row[5] == DBNULL)”时,我会收到错误。错误显示“DBNULL是一种类型,在给定的上下文中无效”。

2
"单元格"是你在电子表格中引用的内容;当处理数据库时,它是记录中的特定列。 - OMG Ponies
3个回答

11

您可以像以下方式检查它。

if (row[5] == DBNull.Value)
{
    // value is null
}
else if (String.IsNullOfEmpty(Convert.ToString(row[5]))
{
    // value is still null
}
else
{
    // value is not null here
}

谢谢,就这样了。我在DBNULL后面没有加上“.Value”。 - Eric

3
if(row[5] == DBNull.Value)

谢谢。就这样了。忘记了“.Value”。 - Eric

0
if(Convert.IsDBNull(row[5]))
{
...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接