Обработка DBNull и NULL в ASP.NET - PullRequest
       38

Обработка DBNull и NULL в ASP.NET

1 голос
/ 10 сентября 2011

Как лучше всего переписать эти (ошибочные) строки?

bool?result = dr ["result"] == DBNull.Value?null: Convert.ToInt32 (dr ["result"]);

... и ...

dr ["result"] = результат ??DBNull.Value;

Оба не компилируются.

Я использую соединитель MySql, и он не позволяет мне установить, например, dr["result"] = null;, что я и делаю первымпробовал.

Существует ли более подходящий тип данных .NET для представления MySql, допускающего нулевое значение tinyint(1)?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Как насчет:

     dr["Hello"] = (object)result ?? DBNull.Value;
     bool? result = dr["result"] == DBNull.Value ? null : (bool?)(Convert.ToInt32(dr["result"]) != 0);

Причина, по которой ваше предложение не компилируется, заключается в том, что обе альтернативы троичного оператора ?: должны иметь одинаковый тип. DBNull.Value явно не тот же тип, что и bool?. Однако приведение bool? к object делает их обоих одного типа. Аналогичные правила применяются во втором ряду.

0 голосов
/ 10 сентября 2011

Если вы используете хранимую процедуру или запросы SQL, тогда вы можете использовать ISNULL() функцию SQL для обработки NULL ...

...