DBNull при добавлении записи в БД

149
20 апреля 2017, 14:14

Я добавляю в БД запись, стоки беру из textbox. Если textbox не заполнен, то нужно поставить значение NULL.

Первый вариант (рабочий):

string patronymic = textBoxPatronymic.Text; if(patronymic != "") { command.Parameters.AddWithValue(patronymic );} else {command.Parameters.AddWithValue(DBNull.Value);}

Но хотелось, чтобы код был более читабельным, сделал так:

command.Parameters.AddWithValue("@patronymic", string.IsNullOrWhiteSpace(patronymic) ? DBNull.Value : patronymic);

или

command.Parameters.Add("@patronymic", SqlDbType.NVarChar).Value = string.IsNullOrWhiteSpace(patronymic) ? DBNull.Value : patronymic;

Но в результате ошибка:

Не удается определить тип условного выражения, так как неявного преобразования между "System.DBNull" и "string" не существует.

В интернете советуют этот способ, но у меня он не работает. В чем моя ошибка?

Answer 1

Вы пытаетесь вернуть неодинаковые типы в

string.IsNullOrWhiteSpace(patronymic) ? DBNull.Value : patronymic

Так делать нельзя.

Предлагаю вам явно привести каждый из них к базовому object

string.IsNullOrWhiteSpace(patronymic) ? (object)DBNull.Value : (object)patronymic
READ ALSO
Поиск в excel-файле

Поиск в excel-файле

Есть excel-файл, в нем два столбца А и ВИз программы на C# мне нужно организовать поиск значения в столбце А, и вернуть в программу рядом стоящее...

252
xmlns в коде для класса

xmlns в коде для класса

Есть две namespace, Допустим RootNSA и Root

206
Копирование файла?

Копирование файла?

https://pastebincom/bYKcyn8n

273
Наследоваие UserControl

Наследоваие UserControl

Имеются UserControl'ы, они все наследуются от UserControlИ как сделать чтоб они наследовались от AbstractClass, а сам AbstractClass от UserControl

245