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を挿入しようとしています。どうすればこれを達成できますか?
ストアドプロシージャにパラメータとしてNULLを渡す必要がある場合は、DBNull.Valueを使用できます。
param.Value = DBNull.Value;
または、if
演算子の代わりにそれを使用できます。
param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value;
DBNull.Value
をお試しください
if (!string.IsNullOrEmpty(activity.StaffId))
param.Value = activity.StaffId;
else
param.Value=DBNull.Value;
DBNull.Value
:
param.Value = DBNull.Value;
常にnull結合演算子(??)を使用できます。
param.Value = activity.StaffId ?? (object)DBNull.Value;