操作符& # 39;& lt; & # 39;不能应用于'object'类型的操作数和& # 39;in

本文关键字:操作数 in 类型 应用于 lt 不能 操作符 object | 更新日期: 2023-09-27 18:15:15

我在ASP创建一个用户登录。. NET和c#然而,在编写一个函数后,由于错误我无法编译。错误提示"操作符'<'不能应用于'object'和'int'类型的操作数"

我想检查从ExecuteNonQuery返回的值是否大于0。否则登录失败。

存储过程是在类的前面与已确认的数据库连接字符串一起创建的。

login.aspx.cs

public bool DBConnection(string strUserName, string strPassword)
        {
            SqlCommand myCommand = new SqlCommand("ValidateUser", _productConn);
            myCommand.CommandType = CommandType.StoredProcedure;
            SqlParameter objParam1 = default(SqlParameter);
            SqlParameter objParam2 = default(SqlParameter);
            SqlParameter objReturnParam = default(SqlParameter);
            objParam1 = myCommand.Parameters.Add("@USERNAME", SqlDbType.VarChar);
            objParam2 = myCommand.Parameters.Add("@PASSWORD", SqlDbType.VarChar);
            objReturnParam = myCommand.Parameters.Add("@NUM_OF_USER", SqlDbType.Int);
            objParam1.Direction = ParameterDirection.Input;
            objParam2.Direction = ParameterDirection.Input;
            objReturnParam.Direction = ParameterDirection.ReturnValue;
            objParam1.Value = textUserName.Text;
            objParam2.Value = textPassword.Text;
            try
            {
                if (_productConn.State == ConnectionState.Closed)
                {
                    _productConn.Open();
                    myCommand.ExecuteNonQuery();
                }
                //// ERROR HERE - I Want to check if the return value is greater than 0 ???
                if (objReturnParam.Value < 1)
                {
                    lblMessage.Text = "Invalid Login!";
                }
                else
                {
                    return true;
                }
                _productConn.Close();
            }
            catch (Exception ex)
            {
                lblMessage.Text = "Error Connecting to Database!";
            }
        }

任何帮助将非常感激,因为我在这个问题上迷路了。谢谢。

操作符& # 39;& lt; & # 39;不能应用于'object'类型的操作数和& # 39;in

必须对Value进行强制类型转换,因为它是一个对象

 if (Convert.ToInt32(objReturnParam.Value) < 1)

如前所述,值属于对象类型。如果您确信它总是包含int(而不是,例如DBNull.Value),则可以在比较之前将其强制转换为int:

if ((int)objReturnParam.Value < 1)

在objReturnParam为空的情况下,您应该使用TryParse。

int ReturnID = 0;
int.TryParse(objReturnParam.Value, ReturnID);
if(ReturnID > 0)
{
      .............
}