Оператор '<' не может быть применен к операндам типа 'object' и 'int' - PullRequest
4 голосов
/ 18 ноября 2011

Я создаю имя пользователя в ASP.NET и C #, однако после написания функции я не могу скомпилировать из-за ошибки. Состояния ошибки «Оператор« <»нельзя применить к операндам типа« объект »и« int »» </p>

Я хочу проверить, является ли возвращаемое значение из 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!";
            }
        }

Любая помощь будет принята с благодарностью, так как я потерян на этом. Спасибо.

Ответы [ 3 ]

20 голосов
/ 18 ноября 2011

Вы должны разыграть Значение, потому что это объект

 if (Convert.ToInt32(objReturnParam.Value) < 1)
4 голосов
/ 18 ноября 2011

Значение, как указано, имеет тип объекта.Если вы уверены, что он всегда содержит int (а не, например, DBNull.Value), вы можете привести его к int перед сравнением:

if ((int)objReturnParam.Value < 1)
0 голосов
/ 18 ноября 2011

Если значение objReturnParam равно нулю, следует использовать TryParse.

int ReturnID = 0;
int.TryParse(objReturnParam.Value, ReturnID);
if(ReturnID > 0)
{
      .............
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...