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

我通过C#访问MS Access 2007数据库,每当我尝试读取空单元格时,我都会收到exception。

具体来说,我正在尝试读取可能会或可能不会为空的“日期/时间”单元格。 我正在使用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是一种类型,在给定的上下文中无效”。

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

 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 } 
 if(row[5] == DBNull.Value) 
 if(Convert.IsDBNull(row[5])) { ... }