不能隐式地将'int'转换为'bool'

时间:2011-08-06 10:29:21

标签: c# sql-server

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#..所以任何身体让我知道如何纠正它。

5 个答案:

答案 0 :(得分:2)

您的方法应返回bool类型的值。但是,您返回int类型的值,因为cmd.ExecuteNonQuery()会将查询的受影响行数返回为int

答案 1 :(得分:2)

猜测:

return cmd.ExecuteNonQuery() != 0;

但这取决于你的查询。由于这是一个SPROC,您可能需要添加一个方向ReturnValur的参数。另请注意:除了销毁.StackTrace之外,你的try / catch什么都不做,你应该“使用”SqlCommand。

答案 2 :(得分:1)

ExecuteNonQuery方法返回int,您尝试将其用作方法的返回值。

如果要检查查询是否影响了至少一条记录:

return cmd.ExecuteNonQuery() >= 1;

如果要检查查询是否只影响了一条记录:

return cmd.ExecuteNonQuery() == 1;

答案 3 :(得分:0)

问题是您的方法InsertBank()声明与您在方法内返回的值不一致。您的方法声明表示它期望bool TrueFalse返回值,但您返回Integer,因为cmd.ExecuteNonQuery();返回int而不是bool }

你应该从你的方法中想出你真正想要的东西。

答案 4 :(得分:0)

使用以下代码。

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