查询时出现超时

当我执行

   

 public int Delete(int id)
        {
               SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction);
            conn.Open();
            SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
            try
            {

 

           //获得违纪,异动记录
            StuStatusChangeEntity stuStatusChangeEntity = dal.GetGetStuStatusChangeById(id);
            //获得学籍异动记录
             StuStatusEntity stuStatuEntity=dalStuStatus.GetModel(stuStatusChangeEntity.xsid, stuStatusChangeEntity.bh);
            //根据学籍异动记录获得学生记录并更新学生记录
                StudentEntity studentEntity = dalStudent.GetstudentById(stuStatuEntity.id);
                studentEntity.Xh = stuStatuEntity.jxh;
                studentEntity.Bh = stuStatuEntity.jbh;
                studentEntity.Nj = stuStatuEntity.jnj;
                studentEntity.Jw_zyh= stuStatuEntity.jw_jzyh;
                //根据专业号取专业
                ProfessionalEntity professionalEntity = dalProfessional.GetProfessioanlById(Convert.ToInt32(stuStatuEntity.jw_jzyh));
                //根据专业的改变来变动相应的学生的基本信息
                //修改学生信息中的学制

                studentEntity.Jw_zymc = professionalEntity.Zymc;//专业名称
                studentEntity.Fy = professionalEntity.Ssdw;  //院校
                studentEntity.Pycc = professionalEntity.Jw_zz_type;//培养层次
                studentEntity.Xhbd = "0";//学号变动    此处有 问题,问问老师


                // 删除违纪,异动记录
                dal.Delete(id,trans);
                  //删除学籍异动记录
                dalStuStatus.Delete(stuStatuEntity.id,trans);
               dalStudent.Update(studentEntity,trans);
                trans.Commit();
            }
            catch (Exception e)
            {
                trans.Rollback();
                throw e;
                return -1;//操作失败
            }
            finally
            {
                conn.Close();
            }

            return 1;

        }

时出现StuStatusChangeEntity stuStatusChangeEntity = dal.GetGetStuStatusChangeById(id);取数据 超时,等我仔细思考发现,我在上面打开了  conn.Open();连接,然后再执行GetGetStuStatusChangeById(id);,而它执行时也要打开连接,导致第一次连接没关,就去打开第二次连接,出现错误,改正如下,先取出数据,调用GetGetStuStatusChangeById(id);,而这类函数里面执行完了就关闭了,在打开连接就没有问题了!

 此函数原型,里面关闭了连接

  stuStatusChangeEntity  GetGetStuStatusChangeById(id)

{

...............

   con.open();

.............

  con.close();

.............

}

改正如下:

public int Delete(int id)
        {
            //获得违纪,异动记录
            StuStatusChangeEntity stuStatusChangeEntity = dal.GetGetStuStatusChangeById(id);
            //获得学籍异动记录
             StuStatusEntity stuStatuEntity=dalStuStatus.GetModel(stuStatusChangeEntity.xsid, stuStatusChangeEntity.bh);
            //根据学籍异动记录获得学生记录并更新学生记录
                StudentEntity studentEntity = dalStudent.GetstudentById(stuStatuEntity.id);
                studentEntity.Xh = stuStatuEntity.jxh;
                studentEntity.Bh = stuStatuEntity.jbh;
                studentEntity.Nj = stuStatuEntity.jnj;
                studentEntity.Jw_zyh= stuStatuEntity.jw_jzyh;
                //根据专业号取专业
                ProfessionalEntity professionalEntity = dalProfessional.GetProfessioanlById(Convert.ToInt32(stuStatuEntity.jw_jzyh));
                //根据专业的改变来变动相应的学生的基本信息
                //修改学生信息中的学制

                studentEntity.Jw_zymc = professionalEntity.Zymc;//专业名称
                studentEntity.Fy = professionalEntity.Ssdw;  //院校
                studentEntity.Pycc = professionalEntity.Jw_zz_type;//培养层次
                studentEntity.Xhbd = "0";//学号变动    此处有 问题,问问老师
            SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction);
            conn.Open();
            SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
            try
            {
                // 删除违纪,异动记录
                dal.Delete(id,trans);
                  //删除学籍异动记录
                dalStuStatus.Delete(stuStatuEntity.id,trans);
               dalStudent.Update(studentEntity,trans);
                trans.Commit();
            }
            catch (Exception e)
            {
                trans.Rollback();
                throw e;
                return -1;//操作失败
            }
            finally
            {
                conn.Close();
            }

            return 1;

        }

posted @ 2009-02-18 22:28  组长  阅读(242)  评论(0编辑  收藏  举报