Ответ 1
Используйте DBNull.Value.Equals для объекта без преобразования его в строку.
Вот пример:
if (! DBNull.Value.Equals(row[fieldName]))
{
//not null
}
else
{
//null
}
У меня есть таблица с столбцом DateTime столбец может иметь значения NULL
Теперь я подключаюсь к базе данных с помощью соединения ODBC и получаю значение в DataTable в .net/С#.
Я могу проверить его на NULL, перейдя
if(String.IsNullOrEmpty(table.rows[0][0].ToString())
{
//Whatever I want to do
}
Является String.IsNullOrEmpty правильным способом проверки нулевых значений.
Используйте DBNull.Value.Equals для объекта без преобразования его в строку.
Вот пример:
if (! DBNull.Value.Equals(row[fieldName]))
{
//not null
}
else
{
//null
}
Просто используйте DataRow.IsNull. Он имеет переопределения, принимая в качестве параметров индекс столбца, имя столбца или Объект DataColumn.
Пример использования индекса столбца:
if (table.rows[0].IsNull(0))
{
//Whatever I want to do
}
И хотя функция называется IsNull
, она действительно сравнивается с DbNull
(это именно то, что вам нужно).
Что делать, если я хочу проверить DbNull, но у меня нет DataRow? Используйте Convert.IsDBNull.
System.Convert.IsDbNull][1](table.rows[0][0]);
IIRC, (table.rows[0][0] == null)
не будет работать, поскольку DbNull.Value != null;
row.IsNull( "столбец" )
Если мы используем EF и читаем элемент базы данных во время цикла, тогда
using( var idr = connection, SP.......)
{
while(idr.read())
{
if(Sting.ISNullOrEmpty(idr["ColumnNameFromDB"].ToString())
//do something
}
}
}
Просто проверьте
if(table.rows[0][0] == null)
{
//Whatever I want to do
}
или вы можете
if(t.Rows[0].IsNull(0))
{
//Whatever I want to do
}