方法为该方法的每个实例运行

时间:2014-02-18 17:29:20

标签: c# sql

我正在尝试根据我的数据类中的方法设置ASP行和单元格颜色。我有颜色设置和方法运行。该方法根据以下条件返回truefalse。如何防止该方法多次运行?

例如,它运行一次并正确返回,然后在""lineNum字段中使用brandNum再次运行,其中包计数与第一次运行的数量相同。它处理为我的方法调用的每个实例运行一次。然后,当我实际再次调用该方法时,它再次运行所有内容。为什么它不止一次运行?我该如何解决这个问题呢?

output:
lineNum:123 brandNum:456 packCount:15
second run (not asked for)
lineNum:"" brandNum:"" packCount:15

确定是否为真的方法:

SqlParameter[] parameters = new SqlParameter[]
{
    new SqlParameter("@GenNum6", itemNum),
    new SqlParameter("@GenTxt9", brandNum)
};

try
{
    reader = App_Code.DBHelper.executeQuery(dbConn,
        sqlString.ToString(), parameters);
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            PackCount = reader["PackCount"].ToString();
        }
    }
    reader.Close();
    reader.Dispose();
    dbConn.Close();
    dbConn.Dispose();
}
catch (Exception ex)
{
    throw ex;
}
finally
{
    if (dbConn != null)
    {
        try { dbConn.Close(); dbConn.Dispose(); }
        catch { }
    }
    if (reader != null)
    {
        try { reader.Close(); reader.Dispose(); }
        catch { }
    }
}

if (Convert.ToInt32(PackCount) <= 12)
{
    return true;
}
else
{
    return false;
}

呼叫:

if (lineData.PacksLeft1(L1.Text,L2.Text))
{
    myTable.Rows[1].Cells[0].BgColor = "#FE2E2E";
    myTable.Rows[1].Cells[1].BgColor = "#FE2E2E";
    myTable.Rows[1].Cells[2].BgColor = "#FE2E2E";
    myTable.Rows[1].Cells[3].BgColor = "#FE2E2E";
}

1 个答案:

答案 0 :(得分:0)

不需要finally语句,因为它执行与try语句中执行的操作相同的操作。我相信看到这篇文章之后,如果你回到它的调用地点,你可以让它在try catch中运行,做同样的事情。我建议采取

reader.Close();
reader.Dispose();
dbConn.Close();
dbConn.Dispose();

退出try块并离开finally语句。这样,无论结果如何,都会执行这些项目。

最后仅在您希望代码在执行try语句之后运行某些内容时使用。如:

Try{
   //Try this statement, if it works, run it.
}
catch{
   //error occurred
}
finally{
  //run this code whether the try failed or not.
}