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

Calendar引发的"惨案"初学者"超时时间已到,但是尚未从池中获取连接"

2012-02-07 
Calendar引发的惨案,菜鸟求助超时时间已到,但是尚未从池中获取连接新做了一个工作行程安排,用到了cale

Calendar引发的"惨案",菜鸟求助"超时时间已到,但是尚未从池中获取连接"
新做了一个工作行程安排,用到了calendar,当时有一个小小想法,想在calendar的每一天上显示当天行程安排的记录总数,
所以在DayRender添加了以下代码:
protected   void   Calendar1_DayRender(object   sender,   DayRenderEventArgs   e)
        {
                string   day   =   e.Day.Date.ToString( "yyyy-MM-dd ");
                string   where   =   "   company= ' "   +   Session[ "company "].ToString().Trim()   +   " '   ";
                where   +=   "and   convert(varchar(10),logdate,020)= ' "   +   day   +   " '   ";
               
                  if   (e.Day.IsOtherMonth)
                {
                        e.Cell.Controls.Clear();
                }
                else
                {
                    //GetDr()通过分页存储过程返回一个SqlDataReader,参数(表,返回字段,排序字段,返回记录数,页码....,where语句)
                    SqlDataReader   dr   =   comm.GetDr( "userlog ",   "* ",   "id ",   10,   1,   1,   1,   where);
                    if   (dr.HasRows)
                    {
                          while   (dr.Read())
                          {
                                if   (dr[ "Total "]   !=   DBNull.Value   &&   dr[ "Total "].ToString()   !=   "0 ")
                                {
                                        Label   lbl   =   new   Label();
                                        lbl.Text   =   dr[ "Total "].ToString();
                                        lbl.ForeColor   =   Color.Red;
                                        e.Cell.Controls.Add(new   LiteralControl( " <br> "));
                                        e.Cell.Controls.Add(lbl);
                                }
                            }


                      }
                      dr.Close();
                      dr.Dispose();
                }
        }
传到服务器上,用了一段时间就会提示 "超时时间已到,但是尚未从池中获取连接... "这样的错误,我猜想应该是Calendar1_DayRender这段代码存在问题,可能打开
的连接太多了(每一天的显示都要打一次),所以请各位指点一下,这段代码怎么改,最好给点提高程序性能方面的指点,新新菜鸟请大家多多照应~~
顺便问一下,这个SQL怎么写,怎么用在上面的问题:
      求SQL语句或存储过程--返回一个月中每天的记录总数
  例如2007年9月数据表:  
          9月1日   id   date   content  
                        1   2007-09-01   上班  
          9月2日   2   2007-09-02   上班  
                        3   2007-09-02   吃饭  
                        4   2007-09-02   上网  
                        9月3日....  
我要返回的数据如下  

2007-09-01   1  
2007-09-02   3(记录总数)  
....


[解决办法]
不要用dataReader,用dataSet,只打开一次数据库连接即可!再利用dataSet里的数据做循环取值!
[解决办法]
数据库里 Count + Group By,用DataSet一次性取出,DayRender里根据DataSet里的数据一一对应显示
[解决办法]
首先尽量用DataSet,其次你的SqlConnection是否关闭了?
[解决办法]
dataReader=myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
你的类是怎么写的?有没有用CommandBehavior.CloseConnection

热点排行