2011-11-18 130 views
3

我在ASP.NET和C#中創建用戶登錄,但編寫函數後我無法編譯,因爲有錯誤。錯誤狀態「操作符'<'不能應用於'object'和'int'類型的操作數」運算符'<'不能應用於'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!"; 
      } 
     } 

任何幫助將非常感激,因爲我失去了這一個。謝謝。

回答

18

你要投的價值,因爲它是一個對象

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

謝謝。我知道這會是這樣簡單的事情... – HGomez90

-1

在objReturnParam是空的情況下,你應該使用的TryParse。

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

這不會工作,除非objReturnParam.Value是一個字符串屬性,但我們知道它是一個對象。 – phoog

+0

SqlParameter的Value屬性是一個字符串。如果此轉換不起作用,則ReturnID將爲零,從而滿足if語句的要求。 – TheGeekYouNeed

+0

由於ReturnID未定義爲空(int?),所以在轉換失敗時,值爲0. – TheGeekYouNeed

4

如上所述,值是對象類型。如果您確信它始終包含int(而不是例如DBNull.Value),則可以在比較之前將其轉換爲int:

if ((int)objReturnParam.Value < 1) 
相關問題