我在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!";
}
}
任何帮助都会非常感激,因为我迷失了这个。感谢。
答案 0 :(得分:19)
你必须施放值,因为它是一个对象
if (Convert.ToInt32(objReturnParam.Value) < 1)
答案 1 :(得分:4)
如上所述,值是对象类型。如果您确信它始终包含int(而不是DBNull.Value),则可以在比较之前将其强制转换为int:
if ((int)objReturnParam.Value < 1)
答案 2 :(得分:-1)
如果objReturnParam为null,则应使用TryParse。
int ReturnID = 0;
int.TryParse(objReturnParam.Value, ReturnID);
if(ReturnID > 0)
{
.............
}