C# 检查列是否返回空值的最佳方法(从数据库到.net应用程序)

C# 检查列是否返回空值的最佳方法(从数据库到.net应用程序),c#,.net,datetime,datatable,null,C#,.net,Datetime,Datatable,Null,我有一个带有日期时间列的表 该列可以有空值 现在,我使用ODBC连接到数据库,并将值放入.net/c#中的DataTable中 我可以通过去检查它是否为空 if(String.IsNullOrEmpty(table.rows[0][0].ToString()) { //Whatever I want to do } Is String.IsNullOrEmpty检查空值的正确方法。在对象上使用,而不将其转换为字符串 下面是一个例子: if (! DBNull.Value.Equ

我有一个带有日期时间列的表 该列可以有空值

现在,我使用ODBC连接到数据库,并将值放入.net/c#中的DataTable中

我可以通过去检查它是否为空

if(String.IsNullOrEmpty(table.rows[0][0].ToString())
{
     //Whatever I want to do
}
Is String.IsNullOrEmpty检查空值的正确方法。

在对象上使用,而不将其转换为字符串

下面是一个例子:

   if (! DBNull.Value.Equals(row[fieldName])) 
   {
      //not null
   }
   else
   {
      //null
   }
row.IsNull(“column”)

只需检查

if(table.rows[0][0] == null)
{
     //Whatever I want to do
}
或者你可以

if(t.Rows[0].IsNull(0))
{
     //Whatever I want to do
}
IIRC,
(table.rows[0][0]==null)
将不起作用,因为
DbNull.Value!=无效

只需使用。它具有接受列索引列名数据列对象作为参数的覆盖

使用列索引的示例:

if (table.rows[0].IsNull(0))
{
    //Whatever I want to do
}
尽管该函数被称为
IsNull
,但它确实与
DbNull
相比较(这正是您所需要的)



如果我想检查DbNull,但我没有数据行,该怎么办?使用。

如果我们使用EF并读取while循环中的数据库元素

   using( var idr = connection, SP.......)
   {
       while(idr.read())
       {
          if(String.IsNullOrEmpty(idr["ColumnNameFromDB"].ToString())
          //do something
       }
   }

这看起来是正确的方法。正如上面链接中所说,“以下示例调用DBNull.Value.Equals方法来确定联系人数据库中的数据库字段是否具有有效值。如果具有有效值,则字段值将附加到标签中的字符串输出中。”table.rows[0][0]==null失败,这就是我使用.ToString()的原因然后使用String.isNullorEmpty检查IsNull方法可以工作,但不能直接将null与null进行比较;null==null为false。充其量,您8必须与DBNull进行比较。Value@Val:No.null==null是真的。@emilsteen D'oh,你当然是对的。九年过去了,我不记得为什么我是从臀部射击:-(弦),不是刺痛。
   using( var idr = connection, SP.......)
   {
       while(idr.read())
       {
          if(String.IsNullOrEmpty(idr["ColumnNameFromDB"].ToString())
          //do something
       }
   }