Как передать нулевое значение, если байтовый массив не предоставляется? - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь передать значение null в поле базы данных изображений, если Parameters.Add не предоставлено *1003*, как показано здесь

cmd.Parameters.Add(new SqlParameter("@Img", SqlDbType.Image)).Value =
    DBNull.Value ? null : ImageByteArray;

, но я получаю сообщение об ошибке

Невозможно неявно преобразовать тип 'System.DBNull' в 'bool'

Первый - это правильный способ сделать это>

, если да, то как передать null значение, если ImageByteArray не предоставлено?

я не знаю, прав ли я, что я хочу сделать, это передать значение null параметру, если байтовый массив не предоставлен, поэтому я избегаю Procedure or function expects parameter '@img', which was not supplied.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вот что я использую:

command.Parameters.Add("@Img", SqlDbType.VarBinary, ImageByteArray == null ? -1 : 
ImageByteArray.Length).Value = ImageByteArray ?? (object)DBNull.Value;

По сути, когда вы отправляете свой байтовый массив в базу данных, вам нужно указать, пустой он или нет.Отправка -1 для длины означает, что полученный массив будет пустым.

0 голосов
/ 28 сентября 2018
DBNull.Value ? null : ImageByteArray;

Эта часть неверна.Потому что троичный оператор должен быть логическим результатом для сравнения.Попробуйте следующее:

(object)ImageByteArray ?? DBNull.Value;

Если ImageByteArray равен нулю, он назначит DBNull.Value для вашего параметра sql.

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