23
        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);

以上不起作用(显然),对象未实例化。当未填充 StaffId 时,我试图将 NULL 插入数据库。我怎样才能做到这一点?

4

4 回答 4

41

当您需要将 NULL 作为参数传递给存储过程时,可以使用 DBNull.Value。

param.Value = DBNull.Value;

或者您可以使用它代替您的if运营商:

param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value;
于 2012-03-21T09:29:47.783 回答
8

尝试DBNull.Value

if (!string.IsNullOrEmpty(activity.StaffId))
   param.Value = activity.StaffId;
else
  param.Value=DBNull.Value;
于 2012-03-21T09:24:59.450 回答
4

您始终可以使用空合并运算符 (??)

param.Value = activity.StaffId ?? (object)DBNull.Value;
于 2018-04-05T18:28:56.970 回答
3

你可以使用DBNull.Value

param.Value = DBNull.Value;
于 2012-03-21T09:25:02.803 回答