Лучший способ проверить, возвращает ли столбец нулевое значение (из базы данных в приложение .net) - PullRequest
29 голосов
/ 07 января 2010

У меня есть таблица со столбцом DateTime столбец может иметь значения NULL

Теперь я подключаюсь к базе данных через ODBC-соединение и получаю значение в DataTable в .net / c #.

Я могу проверить его на NULL, набрав

if(String.IsNullOrEmpty(table.rows[0][0].ToString())
{
     //Whatever I want to do
}

Является ли String.IsNullOrEmpty правильным способом проверки нулевых значений.

Ответы [ 6 ]

79 голосов
/ 07 января 2010

Используйте DBNull.Value.Equals для объекта без преобразования его в строку.

Вот пример:

   if (! DBNull.Value.Equals(row[fieldName])) 
   {
      //not null
   }
   else
   {
      //null
   }
9 голосов
/ 07 января 2010

Просто используйте DataRow.IsNull . Он имеет переопределения, принимающие индекс столбца , имя столбца или объект DataColumn в качестве параметров.

Пример использования индекса столбца:

if (table.rows[0].IsNull(0))
{
    //Whatever I want to do
}

И хотя функция называется IsNull, она действительно сравнивается с DbNull (это именно то, что вам нужно).


Что если я хочу проверить DbNull, но у меня нет DataRow? Используйте Convert.IsDBNull .

3 голосов
/ 07 января 2010
System.Convert.IsDbNull][1](table.rows[0][0]);

IIRC, (table.rows[0][0] == null) не будет работать, как DbNull.Value != null;

0 голосов
/ 07 июля 2017

Если мы используем EF и читаем элемент базы данных в цикле while,

   using( var idr = connection, SP.......)
   {
       while(idr.read())
       {
          if(String.IsNullOrEmpty(idr["ColumnNameFromDB"].ToString())
          //do something
       }
   }
0 голосов
/ 07 января 2010

Просто проверьте на

if(table.rows[0][0] == null)
{
     //Whatever I want to do
}

или вы могли бы

if(t.Rows[0].IsNull(0))
{
     //Whatever I want to do
}
0 голосов
/ 07 января 2010

row.IsNull ( "колонка")

...