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

null 合体演算子 (??) はいつでも使用できます。

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 に答える