Каков наилучший способ борьбы с DBNull? - PullRequest
42 голосов
/ 26 августа 2008

У меня часто возникают проблемы с DataRows, возвращаемым с SqlDataAdapters. Когда я пытаюсь заполнить объект с помощью кода, подобного этому:

DataRow row = ds.Tables[0].Rows[0];
string value = (string)row;

Как лучше всего справиться с DBNull's в такой ситуации.

Ответы [ 14 ]

1 голос
/ 26 августа 2008

По какой-то причине у меня возникли проблемы с проверкой DBNull.Value, поэтому я сделал несколько другие вещи и использовал свойство в объекте DataRow:

if (row.IsNull["fooColumn"])
{
   value = string.Empty();
}
{
else
{
   value = row["fooColumn"].ToString;
}
1 голос
/ 26 августа 2008

Я обычно пишу свой собственный класс ConvertDBNull, который оборачивает встроенный класс Convert. Если значение равно DBNull, оно вернет ноль, если это ссылочный тип, или значение по умолчанию, если это тип значения. Пример: - ConvertDBNull.ToInt64(object obj) возвращает Convert.ToInt64(obj), если obj не является DBNull, в этом случае он возвращает 0.

1 голос
/ 26 августа 2008

Вы также можете проверить с помощью Convert.IsDBNull (MSDN) .

0 голосов
/ 24 октября 2008

Если вас интересует получение DBNull при ожидании строк, один из вариантов - преобразовать все значения DBNull в DataTable в пустую строку.

Это довольно просто сделать, но это добавит некоторых накладных расходов, особенно если вы имеете дело с большими таблицами данных. Проверьте эту ссылку , которая показывает, как это сделать, если вы заинтересованы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...