Сначала проверьте, пуста ли ячейка базы данных. - PullRequest
7 голосов
/ 10 декабря 2010

Я получаю доступ к базе данных MS Access 2007 через C # и получаю исключение, когда пытаюсь прочитать пустую ячейку.

В частности, я пытаюсь прочитать ячейку «Дата / Время», которая может быть или не быть пустой. Я использую OLE DB и заполнил набор данных. Ни одно из этих условий не работает:

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 - это тип, который недопустим в данном контексте».

Ответы [ 3 ]

10 голосов
/ 10 декабря 2010

Вы можете проверить это следующим образом.

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 голосов
/ 10 декабря 2010
if(row[5] == DBNull.Value)
0 голосов
/ 15 февраля 2018
if(Convert.IsDBNull(row[5]))
{
...
}
...