小弟使用循环执行几百次数据库查询,每次都及时的关闭了数据库连接,但是为什么在执行的过程中仍然出现下面的问题,如何解决这个问题呀?超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。源错误: 
行 36:  ConStr = GetMyDataBaseConStr();
行 37:  MyCon = new SqlConnection(ConStr);
行 38:  MyCon.Open();
行 39:  }
行 40:  public void CloseDataBaseCon()                            //关闭数据库连接
 

解决方案 »

  1.   

    我使用的操作系统是winXP,不是服务器版的操作系统,数据库是SQL
    为什么每次都关闭了数据库连接了,再执行下一次操作,去提示上面的错误?
    我的代码如下:
    for(int j=0;j<ClassName.Length;j++)
    {
    string MySqlStr ="select * from CourseScheduling where 班级名称="+"'"+ClassName[j].Trim()+"'"+" and 星期名称="+"'"+WeekDayCourseNum[i].Trim()+"'"+" and 星期值="+RandomEachDayCourse.ToString().Trim();
    int k = 0 ;                           //参数数组的长度
    string[] MyKey      = new string[k] ; //传递参数
    object[] MyValue    = new object[k] ; //传递参数值
    SqlDbType[] MySqlDbType = new SqlDbType[k];
    int[] MyFieldLength =new int[k] ;     //传递参数的字段长度

    SqlDataBase MyClasss = new SqlDataBase();
    SqlDataReader MyReader;
    MyReader = MyClasss.MySqlDataReader(MySqlStr,MyKey, MyValue,MySqlDbType,MyFieldLength);
    MyReader.Close();
    MyClasss.CloseDataBaseCon();
    }
      

  2.   

    打开关闭太频繁,还没来得及关闭就又打开
    这个问题你完全可以打开一次连接datareader 及时关闭就行了
    比如
    conn.open();
    using(sqldatareader dr=cmd.xxx)
    {
    }
    conn.close();
      

  3.   

    设置连接池strconntstring = "data source=localhost;user id=PartTest;password=PartTest;initial catalog=PartTest;Enlist=true;Pooling=true;Max Pool Size=5300;Min Pool Size=0;Connection Lifetime=300;packet size=1000;";