我需要通过参数将可空的int类型(作为可选参数传入,有时是定义的,有时不是...)传递给C#中的INSERT INTO命令。下面是我的代码的屏幕截图。
这是令人反感的代码行,为清楚起见被截断了...
public void WriteCustomColumns(... int? parentPlacementId = null)
{
command.Parameters["@ParentPlacementId"].Value = (parentPlacementId == null ? System.Data.SqlTypes.SqlInt32.Null.Value : parentPlacementId);
这是错误的屏幕截图...
最佳答案
尝试不使用条件运算符
SqlParameter p = command.Parameters.Add("@ParentPlacementId", SqlDbType.BigInt);
if(parentPlacementId.HasValue)
p.Value = parentPlacementId;
else
p.Value = DBNull.Value;
作为一种可能的替代方法(不推荐)
command.Parameters["@ParentPlacementId"].Value =
(parentPlacementId.HasValue ? (object)parentPlacementId.Value : (object)DBNull.Value);