Ошибка при передаче DBNull в SqlParameter - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь передать значение NULL в SqlParameter, если значение переменной vName равно NULL, в противном случае передать значение vName, как показано ниже

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value = vName ? null : DBNull.Value;

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

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

Я искал и обнаружил, что должен использовать AgeItem.AgeIndex, но получил сообщение об ошибке

Имя AgeItem не существует в текущем контексте

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value =(object)AgeItem.AgeIndex ?? DBNull.Value;

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Код должен быть изменен следующим образом

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value!= null ? vName: DBNull.Value;
0 голосов
/ 08 октября 2018

ИМХО намного чище:

if (vName != null)
    cmd.Parameters.AddWithValue("@NAME",vName);
else
    cmd.Parameters.AddWithValue("@Name",null);
0 голосов
/ 08 октября 2018

vName - строка, но вы используете ее, как bool: vName ? ....Используйте vName == null ? ...:

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value =
     vName == null ? DBNull.Value : (Object)vName;
...