C# 传递空Sql参数时出错

C# 传递空Sql参数时出错,c#,sql-server,asp.net-mvc,C#,Sql Server,Asp.net Mvc,我将SQL参数数组传递给我的包装函数,如下所示 SqlParameter[] sqlParams = new SqlParameter[] { new SqlParameter("@UserName",userName), new SqlParameter("@Password",password) }; 当我将空值传递给参数sql server时,会出现以下错误: 过程或函数“AuthenticateUser”需要未提供的参数“@Pa

我将SQL参数数组传递给我的包装函数,如下所示

  SqlParameter[] sqlParams = new SqlParameter[] { 
            new SqlParameter("@UserName",userName),
            new SqlParameter("@Password",password)
  };
当我将空值传递给参数sql server时,会出现以下错误:


过程或函数“AuthenticateUser”需要未提供的参数“@Password”。

您应该传递dbnull值,然后参数值为null:

SqlParameter[] sqlParams = new SqlParameter[] { 
            new SqlParameter("@UserName",(object)userName ?? DBNull.Value),
            new SqlParameter("@Password",(object)password ?? DBNull.Value)
  };

看这里:谢谢alex,但我还有一个错误,那就是??无法应用于字符串和system.DBNullcast参数到对象优先:(对象)用户名??DBNull.Valueit起作用了…………我很高兴它起作用了,那么您可以将此标记为正确答案