Вставка NULL в базу данных SQL из C # DbCommand - PullRequest
16 голосов
/ 21 марта 2012
        DbParameter param = comm.CreateParameter();
        param = comm.CreateParameter();
        param.ParameterName = "@StaffId";
        if (!string.IsNullOrEmpty(activity.StaffId))
            param.Value = activity.StaffId;
        param.DbType = DbType.String;
        comm.Parameters.Add(param);

Выше не работает (очевидно), объект не создан.Я пытаюсь вставить NULL в базу данных, когда StaffId НЕ заполнен.Как мне этого добиться?

Ответы [ 4 ]

33 голосов
/ 21 марта 2012

Вы можете использовать DBNull.Value, когда вам нужно передать NULL в качестве параметра хранимой процедуре.

param.Value = DBNull.Value;

Или вы можете использовать это вместо вашего if оператора:

param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value;
8 голосов
/ 21 марта 2012

Попробуйте DBNull.Value

if (!string.IsNullOrEmpty(activity.StaffId))
   param.Value = activity.StaffId;
else
  param.Value=DBNull.Value;
3 голосов
/ 21 марта 2012

Вы можете использовать DBNull.Value:

param.Value = DBNull.Value;
2 голосов
/ 05 апреля 2018

Вы всегда можете использовать оператор объединения нулей (??)

param.Value = activity.StaffId ?? (object)DBNull.Value;
...