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