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

时间:2010-12-10 05:39:11

标签: c# ms-access exception oledb

我通过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)"") ;

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

3 个答案:

答案 0 :(得分:10)

您可以像以下一样进行检查。

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
}

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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