首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

有多个数据操作,而且是循环的,如何用事务来做回滚呢

2011-12-29 
有多个数据操作,而且是循环的,怎么用事务来做回滚呢SqlConnectionConnectionnewSqlConnection(Exam.Globa

有多个数据操作,而且是循环的,怎么用事务来做回滚呢
SqlConnection   Connection   =   new   SqlConnection(Exam.Global.m_strSqlString);
                        Connection.Open();
                        SqlTransaction   Tran   =   Connection.BeginTransaction();
                        try
                        {
                                for   (;   i   <   studentId.Length;   i++)
                                {
                                        sDB.YunSqlExecuteNonQuery( "CreatePaper ",   parameters,   Tran);
                                        UpdateSubjectDegree(subjectIds,   Tran);
                                }

                                i   =   0;
                                for   (;   i   <   studentId.Length;   i++)
                                {

                                        sDB.YunSqlExecuteNonQuery( "update_applyExam2 ",   parameters,   Tran);
                                }

                                sDB.ExcuteSqlCommand(sql,   Tran);
                                BackupPolicy(policy_id,   ex_auditing_id,   Tran);

                                Tran.Commit();
                                Response.Redirect( "Exams.aspx?kind= "   +   kind);
                        }
                        catch   (Exception   exp)
                        {
                                Tran.Rollback();
                                Response.Write(exp.Message);
                        }
                        finally


                        {
                                Connection.Close();
                        }
为简单起见,代码有省略。这段代码执行后,发生了错误:超时时间已到。在操作完成之前超时时间已过或服务器未响应。

如果不加事务就正常执行,我这里因为要用到事务,所以只用了一个SqlConnection对象,到底应该怎么做呢?请高手赐教。

[解决办法]
你的逻辑大体上没有任何错误的。错误的是你的习惯。

我大致有个设计规则:事务不应该长于3秒钟,如果长于3秒钟,那么应该从业务逻辑上去考虑改变存储结构。

热点排行