我需要通过参数将可空的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);

10-08 08:02