【问题标题】:How to handle data between two function call one after other如何处理两个函数调用之间的数据一个接一个
【发布时间】:2012-12-01 02:50:32
【问题描述】:

我需要使用两个数据库函数,其中一个我需要删除评论,然后调用第二个函数来降低用户的分数。

问题: 如果第二个功能出现异常,不扣分,但删除评论。

我正在尝试将第一个函数的操作存储在类对象中,如果第二个发生异常,将执行反向操作以将其重写到数据库中。有没有其他方法可以做到这一点,请建议我。 在此先感谢

【问题讨论】:

  • 合并到一个函数以避免额外的处理?
  • 如果在执行第一个查询后发生异常,则在一个函数中...

标签: c# sql asp.net-mvc function exception-handling


【解决方案1】:

您需要在同一事务的范围内进行两个数据库调用。因此,如果您遇到异常,所有将被回滚。

这取决于您访问数据库的方式,但可能是这样的:

using (var Conn = new SqlConnection(_ConnectionString))
{
    SqlTransaction trans = null;
    try
    {
        Conn.Open();
        trans = Conn.BeginTransaction();

        using (SqlCommand Com = new SqlCommand(ComText, Conn, trans))
        {
                    // delete comment
                    // update score
         }
         trans.Commit();
      }
    catch (Exception Ex)
    {
        if (trans != null) trans.Rollback();
        return -1;
    }

}

【讨论】:

  • 更新了答案,将其保留为更清晰的示例,但是有几种很好的方法,其中一种很容易理解,但还有改进的余地,取决于您的要求,但应该指出您正确的方向
【解决方案2】:

如果这两个函数都应该被编写或者更接近其中一个,你需要围绕这两个函数放置一个事务。

如果您提交事务,评论和减少分数将保存在数据库中,如果您有异常,您可以进行回滚并且数据库中没有任何反应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2018-01-22
    • 2020-09-17
    • 2020-10-02
    • 2021-01-31
    相关资源
    最近更新 更多