2010-12-10 71 views
7

我正在通过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”,但我得到一个错误,当我尝试“如果(行[5] == DBNULL)“。错误说“DBNULL是一种类型,在给定的上下文中无效”。

+2

“细胞” 是你在电子表格中参考;它是处理数据库时记录中的特定列。 – 2010-12-10 05:41:46

回答

9

您可以像下面这样检查它。

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 
} 
3
if(row[5] == DBNull.Value) 
+0

谢谢。而已。忘记“.Value” – Eric 2010-12-10 05:51:32

+0

:),欢迎您 – TalentTuner 2010-12-10 05:54:01

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