为什么我的if-else逻辑继续给我其他条件?

时间:2014-04-07 04:00:10

标签: c# asp.net if-statement

int phaseOneResult = phaseOne();
if (phaseOneResult > 0)
{
    Response.Redirect("success.aspx?msg=Details submitted");
}
else
{
    lblPhaseOneErr.Text = "No such record found";
}

上面的代码适用于INSERT目的,但对于UPDATE,它不起作用。知道这个逻辑有什么问题吗?

这是phaseOne功能代码

private int phaseOne()
{
    int phaseOneResult = 0;
    //Update query here
    //...
    //...
    cmdUpdatePhaseOne.ExecuteNonQuery();
}
catch (Exception ex)
{
    lblPhaseOneErr.Text = "Error submitting: " + ex.Message;
}
finally
{
    connection.Close();
}
}
    return phaseOneResult;
}

我的数据实际上已经正确更新了,它只是没有进入success.aspx页面,一直给我“没有找到这样的记录”,即使它是成功更新

3 个答案:

答案 0 :(得分:3)

嗯,这不是合法代码......但是从你所展示的,在phaseOne()中你将phaseOneResult设置为0但从未将其设置为其他任何东西。因此它总是返回0.

答案 1 :(得分:1)

您已在phaseOne方法中将phaseOne Result初始化为0,而在其他任何地方都不会更改该值,因此它总是重新调零,否则仅执行条件。

答案 2 :(得分:1)

尝试将代码更改为

private int phaseOne()
{
    int phaseOneResult = 0;

    try
    {

        //Update query here
        //...
        //...
        if(cmdUpdatePhaseOne.ExecuteNonQuery() > 0) 
        {
            phaseOneResult = 1;
        }
    }
    catch (Exception ex)
    {
        lblPhaseOneErr.Text = "Error submitting: " + ex.Message;
    }
    finally
    {
        connection.Close();
    }

    return phaseOneResult;
}

这样,如果受影响的行数> 0,您将只返回1的返回值。否则它将返回0.