web-dev-qa-db-ja.com

C#DbCommandからSQL DBにNULLを挿入する

        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を挿入しようとしています。どうすればこれを達成できますか?

17
SkonJeet

ストアドプロシージャにパラメータとしてNULLを渡す必要がある場合は、DBNull.Valueを使用できます。

param.Value = DBNull.Value;

または、if演算子の代わりにそれを使用できます。

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

DBNull.Valueをお試しください

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

DBNull.Value

param.Value = DBNull.Value;
3
Andomar

常にnull結合演算子(??)を使用できます。

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