不能隐式转换'int'& # 39; bool # 39;

本文关键字:bool int 转换 不能 | 更新日期: 2023-09-27 18:04:45

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'& # 39; bool # 39;

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

猜一猜:

return cmd.ExecuteNonQuery() != 0;

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

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

如果要检查是否至少有一条记录受到查询的影响:

return cmd.ExecuteNonQuery() >= 1;

如果您想检查是否只有一条记录受到查询的影响:

return cmd.ExecuteNonQuery() == 1;

使用以下代码:

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

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