【问题标题】:Inserting NULL to SQL DB from C# DbCommand从 C# DbCommand 将 NULL 插入 SQL DB
【发布时间】:2012-03-21 09:22:01
【问题描述】:
        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 插入数据库。我怎样才能做到这一点?

【问题讨论】:

标签: c# sql dbcommand


【解决方案1】:

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

param.Value = DBNull.Value;

或者您可以使用它来代替 if 运算符:

param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value;

【讨论】:

  • 感谢 Andrey 的编辑 - 非常感谢。不得不将它作为一个对象进行转换似乎很疯狂(无论如何对我来说)。
【解决方案2】:

试试DBNull.Value

if (!string.IsNullOrEmpty(activity.StaffId))
   param.Value = activity.StaffId;
else
  param.Value=DBNull.Value;

【讨论】:

  • 有没有办法使用?运算符的一种速记 if else 语句在这里?好像不太喜欢 String/DBNull.Value 的转换!?
  • 试试这个:param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value;
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    你可以使用DBNull.Value:

    param.Value = DBNull.Value;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多