2011-08-06 96 views
0
public bool InsertBank() 
{ 
    try 
    { 
     SqlCommand cmd = new SqlCommand("INSERTBANKMASTER", dal.con); 
     cmd.Parameters.Add("@Bank_Name",SqlDbType.NVarChar).Value = Bank_Name; 
     cmd.Parameters.Add("@Bank_ShortName",SqlDbType.NVarChar).Value = Bank_ShortName; 
     cmd.Parameters.Add("@CreditCard_Commission_Percent",SqlDbType.Float).Value = CreditCard_Commission_Percent; 
     cmd.CommandType = CommandType.StoredProcedure; 
     return cmd.ExecuteNonQuery();     
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 

我無法解決這個錯誤..即時通訊新的C#..所以任何機構讓我知道如何糾正它。不能隱式地將'int'轉換爲'bool'

+0

感謝ü溫和芒..烏拉圭回合答案.. –

回答

0

使用以下代碼。

return Convert.ToBoolean(cmd.ExecuteNonQuery()); 
+1

感謝ü..它的工作好... –

+1

這只是轉換隱式轉換到一個明確的。該值首先不代表布爾值,因此將其轉換爲一個並不合適。 – Guffa

+0

'Convert.ToBoolean(cmd.ExecuteNonQuery())'只返回false'cmd.ExecuteNonQuery()'爲0,否則返回true。 –

2

你的方法應該返回一個bool類型的值。但是,您返回的值類型爲int,因爲cmd.ExecuteNonQuery()將查詢的受影響行數作爲int返回。

1

ExecuteNonQuery方法返回一個int,您嘗試將該方法用作返回值。

如果你想檢查是否至少有一個記錄是受查詢:

return cmd.ExecuteNonQuery() >= 1; 

如果你想檢查是否一個記錄是受查詢:

return cmd.ExecuteNonQuery() == 1; 
0

問題是您的方法InsertBank()聲明與您在方法內返回的值不一致。你的方法聲明中說,它期望在返回值的布爾TrueFalse但你返回一個Integercmd.ExecuteNonQuery();回報intbool

你應該想到你居然想從你的方法什麼樣的回報。

1

在猜測:

return cmd.ExecuteNonQuery() != 0; 

但是這取決於您的查詢。由於這是SPROC,因此您可能需要添加一個方向爲ReturnValur的參數。還要注意:你的try/catch除了銷燬.StackTrace之外什麼也不做,你應該「使用」SqlCommand。

相關問題